R에서 가장 많이 사용되는 코딩 스타일 가이드 2가지
이 두가지 가이드를 바탕으로 최적화하여 정리해 보면 다음과 같다.
- R 스크립트 파일명은 .R 확장자로 끝낸다.
- 파일명은 중간에 대시(-)나 밑줄(_)을 사용해도 좋다
- 파일명은 의미 있어야 한다.
- 여러개의 파일을 순차적으로 실행할 경우에는 숫자를 앞에 붙있다. (예: 0-download.R, 1-parse.R, 2-explorer.R)
- 변수명은 variable_name, 함수명은 function_name, 상수는 CONSTANT_NAME 형태를 사용한다.
- variable.name, variableName, FunctionNAme, ConstantNAme 등은 사용하지 않는다.
- 변수명은 명사, 함수명은 동사로 한다. 짧지만 의미 있는 이름을 사용한다. (예: calculate_avg_chicks)
- 가능한 한 기존 함수나 변수명과 중복되는 이름을 피한다.
- 한 줄은 최대 80글자로 제한한다.
- 들여쓰기는 두 스페이스, 탭은 사용하지 않는다.
- 띄어쓰기
- 이항 연산자(binary operators) =, +, -, % 등은 양쪽에 한 칸씩 비운다. 예외로, 함수 호출 시 옵션 지정에 사용하는 =는 빈칸 없이 사용해도 좋다.
- 콤마 다음에는 항상 한 칸을 띄어쓴다. (예: x[1, ]).
- 함수 호출 이외에 괄호 앞은 한 칸을 띄어쓴다 (예: if (debug)).
- 이항 연산자 ::과 :는 빈칸이 필요 없다 (x = 1:10, dplyr::minute).
- 중괄호({})는 같은 줄에서 열고 별도의 줄에서 닫는다.
- else 절은 중괄호로 감싸준다.
- 할당은 <- 를 사용한다.
- 세미콜론(;)을 사용하지 않는다.
- 코드 레이아웃과 순서
- 저작권(copyright) 정보
- 저자 정보
- 파일 정보: 코드의 목적, 입력, 출력
- source()와 library() 문
- 함수 정의
- 함수가 많을 때는 별로의 스크립트, 예를 들어 my_func.R을 사용해도 좋다. source(“my_func.R”)로 읽어 들이다.
- 실행문들
- 유닛 테스트(unit test)를 한다면 별도의 파일 originalfilename_test.R을 사용한다.
- 주석은 # 다음에 한 칸을 띄고 ㅆ시작한다. 인라인(inline) 주석은 # 전에 두 칸을 띈다.
- 함수 정의와 호출: 함수 정의는 디폴트가 없는 인수들을 먼저 저의하고, 디폴트가 있는 인수를 나중에 정의한다.
- 함수 주석: 함수를 정의하는 줄 바로 밑에 주석을 단다. 한 문장으로 함수를 기술하고, Args: 밑에 함수의 각 인자와 변수명을 기술하고, Returns: 밑에 리턴값을 기술한다.
- R의 attach() 함수는 사용하지 않는다.
- 함수 에러 시에는 stop()을 호출한다.
- (고급) R의 객체지향 방법은 S3와 S4가 있는데, 가능한 한 S3를 사용한다. 절대 S3와 S4를 혼용하지 않는다.
깃 버전 관리 가이드
- 모든 프로젝트 코드는 Git과 같은 Tool로 버전 관리한다.
- 프로젝트 개요 및 데이터의 설명 등 의미 있는 README.md 파일을 작성한다.
- 한 번 쓰고 버리는 코드도 버전 관리한다.
- 자주 커밋하고 레퍼지토리에 Push 하여 업데이트 한다.