跳到主要内容

代码整洁之道

· 阅读需 5 分钟

JS整洁之道

代码整洁之道

代码整洁之道思维导图

主要思想

测试

有意义的命名

可重用性

体现设计理念

实体少

依赖关系少

代码逻辑清晰

分层次

性能调优

命名

要有意义

  • 除非是单纯用来遍历的变量或者数,否则单独设置一个有意义的变量或者常量
  • 读得出来
  • 可搜索

意义要明确

类class替换复杂的数据结构

命名差异要明显

命名的区分也要有意义

  • 使用数字系列来区分
  • 使用近义词或者多余词来区分

避免使用编码

  • 成员前缀
  • 接口和实现

类名

  • 类名、对象名使用名词或名词短语

  • 要有明确意义

    • 类名Data

方法名使用动词或动词短语

  • 属性访问器get前缀
  • 属性修改器set前缀
  • 断言is前缀

使用语境或者类来定义模块变量

使用对领域人士一看就懂的专业名称

函数

短小

只做好一件事

  • 判断是否只做了一件事---没办法继续拆分出函数来
  • 多个步骤在同一个抽象层上

参数最多3个,超过3个使用参数对象

函数名要名副其实

  • 不要做函数名以外的事情

错误异常

  • 使用异常代替返回错误码
  • 抽离try/catch代码块

消灭重复

注释

无法用代码来表达意图时才使用注释

值得写的注释

  • 法律信息
  • 无法从代码中可以获得的信息
  • 警示
  • TODO
  • 解释某个巧妙的地方

要删除的注释

  • 能够从代码中获取信息的注释
  • 被注释的代码

格式

垂直方向

  • 紧密相关的代码靠近

  • 不紧密相关的代码用空格隔开

  • 同一作用域的变量统统放在顶部

  • 代码太长就要拆分

    • 不仅以函数为单位进行拆分,甚至以类、文件为单位

水平方向

  • 紧密相关事物靠近
  • 不紧密相关的代码用空格隔开
  • 使用空格强调前面的运算符

缩进

while、for语句体为空

错误处理

使用异常而非返回码

先写try...catch

当异常种类较多时打包成一个单独的异常类

使用特例模式

不返回、传递空值(null、undefined)

边界

调用外部接口时有所封装

  • 语言本身的接口
  • 外部框架、插件

为未来可能的功能接口留出位置

避免自己系统的代码过度使用第三方代码中的特定信息

单元测试

在编写生产代码前编写单元测试

可读性

每个测试一个断言

FIRST原则

  • Fast快速

    • 测试速度要快
  • Independent独立

    • 每个测试独立运行
  • Repeatable可重复

    • 可以在任何环境中重复通过
  • Self-Validating自足验证

    • 要有布尔值输出
  • Timely及时

    • 应该及时编写

测试先行

短小

  • 单一权责

  • 类名称应该描述其权责

    • 如果无法为某个类命名精确的名称,那么这个类就太长了

保持内聚

依赖于抽象(抽象类)而非具体细节(实现类)

XMind: ZEN - Trial Version