跳到主要内容

编码风格

这些是 Electron 中编码的风格指南。

您可以运行 npm run lint 来显示 cpplinteslint 检测到的任何样式问题。

通用代码

  • 以换行符结束文件。
  • 按以下顺序放置 require
    • 内置 Node 模块(例如 path
    • 内置 Electron 模块(例如 ipc, app
    • 本地模块(使用相对路径)
  • 按以下顺序放置类属性
    • 类方法和属性(以 @ 开头的方法)
    • 实例方法和属性
  • 避免依赖平台的代码
    • 使用 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 时,首选使用 getters 和 setters,而不是 jQuery 的单函数样式。 例如,.getText().setText(text) 优于 .text([text])。 这里有一个 讨论