跳到主要內容

程式碼風格

這些是 Electron 程式碼的風格指南。

您可以執行 npm run lint 來顯示 cpplinteslint 偵測到的任何風格問題。

一般程式碼

  • 檔案結尾需換行。
  • 將 requires 依以下順序放置
    • 內建 Node 模組 (例如 path)
    • 內建 Electron 模組 (例如 ipcapp)
    • 本機模組 (使用相對路徑)
  • 將類別屬性依以下順序放置
    • 類別方法和屬性 (以 @ 開頭的方法)
    • 實例方法和屬性
  • 避免平台相關的程式碼
    • 使用 path.join() 來串連檔名。
    • 當您需要參考暫存目錄時,請使用 os.tmpdir() 而非 /tmp
  • 在函式結尾明確傳回時,使用純 return
    • 請勿使用 return nullreturn undefinednullundefined

C++ 和 Python

對於 C++ 和 Python,我們遵循 Chromium 的程式碼風格。還有一個腳本 script/cpplint.py 可以檢查所有檔案是否符合規範。

我們現在使用的 Python 版本是 Python 3.9。

C++ 程式碼大量使用 Chromium 的抽象概念和類型,因此建議您熟悉它們。一個好的起點是 Chromium 的重要抽象概念和資料結構文件。該文件提到了某些特殊類型、作用域類型 (在超出作用域時自動釋放記憶體)、記錄機制等等。

文件

  • 撰寫 remark markdown 風格的文件。

您可以執行 npm run lint:docs 以確保您的文件變更已正確格式化。

JavaScript

  • 撰寫 standard JavaScript 風格的程式碼。
  • 檔名應使用 - 而非 _ 連接,例如 file-name.js 而非 file_name.js,因為在 atom/atom 模組名稱通常採用 module-name 形式。此規則僅適用於 .js 檔案。
  • 在適當的地方使用較新的 ES6/ES2015 語法
    • const 用於 requires 和其他常數。如果值是原始值,請使用大寫命名 (例如 const NUMBER_OF_RETRIES = 5)。
    • let 用於定義變數
    • 箭頭函式 而非 function () { }
    • 模板字串 而非使用 + 的字串串連

命名事物

Electron API 使用與 Node.js 相同的首字母大寫方案

  • 當模組本身是一個類別時,例如 BrowserWindow,請使用 PascalCase
  • 當模組是一組 API 時,例如 globalShortcut,請使用 camelCase
  • 當 API 是物件的屬性,並且複雜到足以單獨成章時,例如 win.webContents,請使用 mixedCase
  • 對於其他非模組 API,請使用自然標題,例如 <webview> TagProcess Object

在建立新的 API 時,最好使用 getter 和 setter 而不是 jQuery 的單函式樣式。例如,.getText().setText(text).text([text]) 更受歡迎。關於這一點,有一個討論