코딩 스타일 가이드
이 문서는 Electron 프로젝트에서 지켜야 할 코딩 스타일 가이드라인을 설명한다.
cpplint
와 eslint
를 사용해 코드 스타일 문제를 검사할 수 있다. npm run lint
명령어를 실행하면 현재 프로젝트에서 발견된 스타일 문제를 확인할 수 있다.
일반적인 코드 작성 규칙
- 파일 끝에 새 줄을 추가한다.
- require 문은 다음 순서로 작성한다:
- Node.js 내장 모듈 (예:
path
) - Electron 내장 모듈 (예:
ipc
,app
) - 상대 경로를 사용한 로컬 모듈
- Node.js 내장 모듈 (예:
- 클래스 속성은 다음 순서로 작성한다:
- 클래스 메서드와 속성 (
@
로 시작하는 메서드) - 인스턴스 메서드와 속성
- 클래스 메서드와 속성 (
- 플랫폼에 의존적인 코드를 피한다:
- 파일 경로를 연결할 때
path.join()
을 사용한다. - 임시 디렉토리를 참조할 때
/tmp
대신os.tmpdir()
을 사용한다.
- 파일 경로를 연결할 때
- 함수 끝에서 명시적으로 반환할 때는 단순히
return
을 사용한다:return null
,return undefined
,null
,undefined
는 사용하지 않는다.
C++와 Python
C++와 Python의 경우, Chromium의 코딩 스타일 가이드를 따릅니다. 또한, 모든 파일이 규칙을 준수하는지 확인하기 위해 script/cpplint.py
스크립트를 사용할 수 있습니다.
현재 사용 중인 Python 버전은 Python 3.9입니다.
C++ 코드는 Chromium의 추상화와 타입을 많이 사용하므로, 이를 잘 이해하는 것이 중요합니다. 시작하기 좋은 자료로는 Chromium의 중요한 추상화와 데이터 구조 문서가 있습니다. 이 문서는 특수 타입, 스코프가 끝나면 자동으로 메모리를 해제하는 스코프 타입, 로깅 메커니즘 등을 다룹니다.
문서화
- remark 마크다운 스타일로 작성한다.
문서 변경 사항이 올바르게 포맷되었는지 확인하려면 npm run lint:docs
명령어를 실행한다.
JavaScript
- Standard JavaScript 스타일을 따른다.
- 파일 이름은
_
대신-
를 사용해 연결한다. 예를 들어file_name.js
대신file-name.js
를 사용한다. atom/atom에서 모듈 이름은 보통module-name
형식이기 때문이다. 이 규칙은.js
파일에만 적용된다. - 적절한 경우 새로운 ES6/ES2015 문법을 사용한다.
const
를 사용해 require와 다른 상수를 정의한다. 값이 원시 타입일 경우 대문자로 이름을 짓는다 (예:const NUMBER_OF_RETRIES = 5
).let
을 사용해 변수를 정의한다.function () { }
대신 화살표 함수를 사용한다.+
를 사용한 문자열 연결 대신 템플릿 리터럴을 사용한다.
이름 짓기 규칙
Electron API는 Node.js와 동일한 대소문자 규칙을 따른다:
BrowserWindow
처럼 모듈 자체가 클래스인 경우PascalCase
를 사용한다.globalShortcut
처럼 모듈이 API 집합인 경우camelCase
를 사용한다.win.webContents
처럼 객체의 속성이며 별도의 장에서 다룰 만큼 복잡한 API는mixedCase
를 사용한다.<webview> 태그
나Process 객체
처럼 모듈이 아닌 다른 API는 자연스러운 제목을 사용한다.
새로운 API를 만들 때는 jQuery의 단일 함수 스타일 대신 getter와 setter를 사용하는 것을 권장한다. 예를 들어, .text([text])
보다 .getText()
와 .setText(text)
를 선호한다. 이에 대한 논의가 있다.