菜单

格式化和注释

相关源文件

目的与范围

本页面介绍了 JavaScript 代码格式化和注释的最佳实践。一致的格式和恰当的注释是代码规范的关键组成部分,它们能显著提高代码的可读性和可维护性。本文档涵盖了何时以及如何统一格式化代码,以及何时需要注释以及什么样的注释是有效的。

有关相关主题,请参阅 变量(关于命名约定)和 函数(关于函数结构指南)。

代码格式和注释简介

代码格式和注释是开发者之间的沟通工具。代码主要与计算机交流,而其格式和注释则向其他开发者(包括未来的自己)传达意图和设计决策。

来源: README.md2082-2217 README.md2222-2354

格式指南

保持格式一致的重要性

格式很大程度上是主观的,但代码库中的一致性至关重要。《README》明确指出:“不要为格式争论。” 自动化工具应该处理格式化决策,以节省时间并消除不一致之处。

来源: README.md2082-2088

一致的命名规范

JavaScript 是弱类型语言,因此命名规范为变量、函数和类提供了重要的视觉线索。你选择的具体约定不如一致地应用它重要。

类型约定示例
常量全大写const DAYS_IN_WEEK = 7;
变量/函数驼峰式命名const currentDate = new Date();
帕斯卡命名法class Animal {}
文件名烤肉串式命名clean-code.js

来源: README.md2093-2129

函数组织

相互调用的函数应放置在源文件中彼此靠近的位置。理想情况下,调用函数应直接放在被调用函数之上。这符合从上到下的自然阅读模式,从而提高了可读性。

来源: README.md2133-2217

注释指南

注释是作为一种弥补,而非必需

《README》做出了一个大胆的陈述:“注释是作为一种弥补,而非必需。” 这意味着写得好的代码在很大程度上应该是自解释的。只有当代码无法清楚地表达业务逻辑或复杂意图时,注释才是必要的。

来源: README.md2222-2264

不应该写哪些注释

《clean code》原则确定了几种注释的反模式

  1. 被注释掉的代码 - 请使用版本控制
  2. 日志注释 - 请使用 git 历史
  3. 显而易见的解释 - 当代码已经很清晰时,不要解释代码的作用
  4. 位置标记 - 让代码结构自己说话

来源: README.md2267-2353

格式、注释与代码质量的关系

正确的格式和恰当的注释共同作用,创建出更易于维护的代码。它们在代码规范生态系统中服务于不同但互补的目的。

来源: README.md2082-2088 README.md2222-2226

实际应用

格式化自动化工具

虽然《README》没有规定具体的工具,但它建议尽可能使用自动化来保持格式一致。以下是 JavaScript 项目中常用的工具:

工具目的配置
ESLint代码检查和格式化规则.eslintrc 文件
Prettier代码格式化.prettierrc 文件
StandardJS零配置格式化package.json 配置项
EditorConfig编辑器层面的格式化.editorconfig 文件

来源: README.md2086-2088

何时编写注释

注释应侧重于解释“为什么”,而不是“是什么”。当出现以下情况时,应编写注释:

  1. 业务逻辑复杂且不直观
  2. 你正在实现一个非直观的算法
  3. 你正在处理库或语言的限制
  4. 代码存在重要的约束或假设

当出现以下情况时,应避免注释:

  1. 代码通过良好的命名已实现自解释
  2. 你可以重构代码以使其更清晰
  3. 你想解释显而易见的事情

来源: README.md2225-2264

从理论到实践:示例

格式示例:一致的命名规范

《README》展示了命名规范一致性方面的好坏示例。

  • 混合的约定会造成混淆
  • 难以预测命名模式
  • 降低可读性

良好

  • 一致的约定创建视觉模式
  • 使代码更易于扫描
  • 提供关于变量用途的隐含信息

来源: README.md2099-2129

注释示例:注释业务逻辑

《README》展示了一个哈希函数示例,其中只有非显而易见的部分需要注释。

  • 过度注释的代码
  • 解释显而易见的注释
  • 增加了干扰代码的噪音

良好

  • 自解释的变量名
  • 仅为复杂操作添加注释
  • 关注“为什么”而不是“是什么”

来源: README.md2227-2264

结论

格式化和注释对于编写干净、可维护的 JavaScript 代码至关重要。应尽可能自动化一致的格式化,而注释应明智地使用,以解释复杂的业务逻辑或不明显的意图。请记住,最好的代码需要的注释最少,因为它通过恰当的命名、结构和组织实现了自文档化。

遵循这些指南将有助于创建更易于理解、维护和扩展的代码库——这些都是代码规范的关键特性。