编码风格
以下是 Electron 编码的风格指南。
你可以运行 npm run lint
来显示 cpplint
和 eslint
检测到的任何风格问题。
通用代码
- 文件末尾以换行符结束。
- 按以下顺序放置 require
- 内置 Node 模块(如
path
) - 内置 Electron 模块(如
ipc
,app
) - 本地模块(使用相对路径)
- 内置 Node 模块(如
- 按以下顺序放置类属性
- 类方法和属性(以
@
开头的方法) - 实例方法和属性
- 类方法和属性(以
- 避免平台依赖的代码
- 使用
path.join()
来连接文件名。 - 当需要引用临时目录时,使用
os.tmpdir()
而不是/tmp
。
- 使用
- 在函数末尾显式返回时,使用纯
return
。- 不要使用
return null
、return undefined
、null
或undefined
- 不要使用
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 语法
命名事物
Electron API 使用与 Node.js 相同的首字母大写方案
- 当模块本身是一个类,例如
BrowserWindow
时,使用PascalCase
。 - 当模块是一组 API,例如
globalShortcut
时,使用camelCase
。 - 当 API 是对象的属性,并且足够复杂,可以在单独的章节中介绍时,例如
win.webContents
,使用mixedCase
。 - 对于其他非模块 API,使用自然标题,例如
<webview> 标签
或Process 对象
。
创建新的 API 时,最好使用 getter 和 setter 而不是 jQuery 的单函数风格。例如,.getText()
和 .setText(text)
优于 .text([text])
。这里有一个 讨论。