clean-code 是一份面向可读性与可维护性的整洁代码原则资料,核心理念是代码被阅读的次数远多于被编写,因此应写得让人能看懂。它按主题给出反例(BAD)与正例(GOOD)对照,帮助开发者在日常编码中应用这些规则。
主要内容与用途:
命名:变量应避免含义不明的简写,用有意义、可搜索的名称,例如用 MILLISECONDS_PER_DAY 代替 d,用 users 代替 list。函数名采用动词加名词描述行为,如 validateUserInput、calculateTotalPrice、sendWelcomeEmail。布尔值使用 is/has/can/should 前缀,如 isOpen、canWrite、hasFruit。
函数设计:主张单一职责,把“创建用户并发送邮件并记录日志”拆成 createUser、sendWelcomeEmail、logUserCreation 等各自只做一件事的函数;参数过多时改用选项对象(如 CreateUserOptions);避免布尔标志参数改变行为,而是拆成 createFile 与 createTempFile;用提前返回替代深层嵌套条件。
注释:不要用注释解释糟糕代码,而应重写代码使其自解释。好的注释用于说明正则匹配的格式、TODO、WARNING、NOTE 等必要背景信息。
错误处理:不要返回 null,可选择抛出异常或返回 Result 类型;也不要传入 null,而是要求有效输入,由调用方保证参数合法。
格式化:选定并统一风格指南(如 Prettier、StandardJS、Black),用格式化工具自动化,不在代码评审中争论风格;按相关性组织代码,把相关语句就近分组。
代码坏味道与检查清单:列举长方法、长参数列表、重复代码、死代码、魔法数字、深层嵌套、特性依恋、数据泥团等问题及对应处理方式(提取方法、参数对象、提取函数、删除、命名常量、提前返回等)。同时提倡“童子军规则”,即每次提交都让代码比发现时更整洁,并在提交前用清单自检:六个月后是否还能读懂、新成员能否读懂、命名是否具描述性且可搜索、每个函数是否只做一件事、是否存在魔法数字或字符串、错误处理是否恰当、是否清除了死代码。
适用场景与限制:该资料以原则与示例为主,适用于代码编写、重构和评审时的参考。资料未提供具体安装方式、命令行工具、运行步骤或与特定平台的集成方法,也未说明收费、价格或授权信息。