开发者注意事项 - the-dissidents/subtle GitHub Wiki

项目组织

  • HTML/Svelte组件统一设置tab宽度为2,其它文件统一tab宽度为4,但都使用空格,不要使用tab字符。
  • 换行符统一使用LF(\n),避免使用CR-LF(\r\n)。
  • 不要提交IDE配置文件,因为它们不一定能跨平台。但是可以给一些示例,比如我们有.vscode/settings.mac.json.vscode/settings.windows-msvc.json,可以视情况改编给自己使用。

代码风格(TypeScript)

  • 标识符起名要使用尽可能正确的英语。
  • 注释可选择使用尽可能正确的英语或者中文。注释有两种不同的用途:1. 让过于庞大的函数变得清晰;2. 解释比较难懂的算法或反直觉的逻辑。
  • 每一个语句后面都要加分号(除了控制流语句如if (...) {}之外)。
    • 我们建议在type ... = {...};最后加分号
    • 但是interface ... {...}class ... {...}里面不需要
  • 如果你想要写一个TypeScript枚举,首先想想能不能用literal union解决。后者基本上能覆盖前者的所有使用场合,在性能上几乎没有差异,并且在调试和序列化上有优势。
  • 使用switch讨论枚举或union取值情况的时候一定加上default块,并在其中使用Debug.never
  • 多使用Debug.assertDebug.early
    • 我们称下列情况为early return:一个函数被调用的时机不恰当,或者在不该调用的时候被调用了,导致什么也不需要做。一般来说,它不导致程序直接出现错误行为,但很可能意味着某些地方有潜在的逻辑问题。
    • 建议在early return的时候写return Debug.early('reason');

代码风格(Rust)

  • cargo clippy -- -Wclippy::pedantic,解决所有警告
  • 其实我不懂Rust,只会瞎写。谁来教我