Skip to main content

코딩 스타일 가이드

이 문서는 Electron 프로젝트에서 지켜야 할 코딩 스타일 가이드라인을 설명한다.

cpplinteslint를 사용해 코드 스타일 문제를 검사할 수 있다. npm run lint 명령어를 실행하면 현재 프로젝트에서 발견된 스타일 문제를 확인할 수 있다.

일반적인 코드 작성 규칙

  • 파일 끝에 새 줄을 추가한다.
  • require 문은 다음 순서로 작성한다:
    • Node.js 내장 모듈 (예: path)
    • Electron 내장 모듈 (예: ipc, app)
    • 상대 경로를 사용한 로컬 모듈
  • 클래스 속성은 다음 순서로 작성한다:
    • 클래스 메서드와 속성 (@로 시작하는 메서드)
    • 인스턴스 메서드와 속성
  • 플랫폼에 의존적인 코드를 피한다:
    • 파일 경로를 연결할 때 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)를 선호한다. 이에 대한 논의가 있다.