代码健壮性&简洁

69 阅读2分钟

健壮性

更安全的访问对象

实际获取的数据与预期并不相同。

Array.isArray(data) && data.forEach(()=>{})

异常处理

异常处理是代码健壮性的首要保障,关于异常处理有两个方面

  • 合适的错误处理可以提高用户体验,在代码出错时优雅地提示用户
  • 将错误处理进行封装,可以减少开发量,将错误处理与代码解耦

简洁

  • 形参不超过三个,超过三个使用对象参数。同时建议使用对象解构语法(1. 能清楚看到函数签名有哪些熟悉;2. 可以直接重新命名;3. 解构自带克隆,防止副作用;4. Linter检查到函数未使用的属性。)
  • 封装复杂的判断条件,提高可读性。
  • 函数只做一件事,代码读起来更清晰,函数就能更好地组合、测试、重构。
  • TODO注释,记录下应该做但还没做的工作。另一个好处,提前写好命名,可以帮助后来者统一命名风格。
  • hack警示作用,解释此处不能修改的原因。
  • 避免循规式注释,不要求每个函数都要求jsdoc,jsdoc一般是用在公共代码上。

  • 单一职责原则 (SRP):保证“每次改动只有一个修改理由”。因为如果一个类中有太多功能并且您修改了其中的一部分,则很难预期改动对其他功能的影响。
  • 开闭原则 (OCP):对扩展放开,但是对修改关闭。在不更改现有代码的情况下添加新功能。比如一个方法因为有switch的语句,每次出现新增条件时就要修改原来的方法。这时候不如换成多态的特性。
  • 里氏替换原则 (LSP)
    • 如果S是T的子类,则T的对象可以替换为S的对象,而不会破坏程序。
    • 所有引用其父类对象方法的地方,都可以透明的替换为其子类对象。
    • 保证任何父类对象出现的地方,用其子类的对象来替换,不会出错。
  • 接口隔离原则 (ISP):定义是"客户不应被迫使用对其而言无用的方法或功能"。常见的就是让一些参数变成可选的。
  • 依赖倒置原则(DIP):程序要依赖于抽象接口(可以理解为入参),不要依赖于具体实现。这样可以减少耦合度。