一位前端工程师的Writing better code

293 阅读2分钟

提升代码最有效的方式是反反复复地推敲代码,

  • 过几个星期或者几个月再回头来看。

if else

  • if语句总有两个分支,else可能还出现重复代码,可以嵌套和缩进,但是是清晰和严密的。
  • 大量的截断写法和零散的if逻辑会让代码难以维护。
  • 无懈可击。// both template & js

模块化

  • 搞一个文件夹叫做module并不是模块化,真正的模块化不是文本上的区分,而是逻辑上的区分。
  • 要定义清楚输入和输出,要分析清楚真正的依赖是什么,能知道什么,不能知道什么。
  • 函数体避免过长。(一屏)
  • 定义工具函数。
  • 每个函数做到职责单一。
  • 避免通过全局变量或者外层的变量来传递信息。// global vs state management

可读代码

  • 函数和变量的命名。(sth. doSth.)
  • 局部变量应该定义接近在在调用它的地方。
  • 局部变量名字可以简短。// let age = getAgeFrom(user); let userAge = getAgeFromUser(user);
  • 不要重用局部变量。// 可以使用IIFE
  • 复杂表达式做成中间变量。// if ((xxx && yyy) || (mmm && nnn)) {...} => const isValid = (xxx && yyy) || (mmm && nnn); if (isValid) {...}
  • 合理的换行和空行。
  • code standard(lint) sometimes is evil

simple & stupid // KISS

  • 并不是语言或框架提供给你的特性就一定是对的。
  • 盲目的追求“短小”和“精悍”,或者为了显示自己头脑聪明,学得快,所以喜欢利用语言里的一些特殊构造,写出过于“聪明”,难以理解的代码。
  • 不要省略花括号。
  • 不要使用&&和||来控制代码执行流程。 if (a() || b() && c()) { ... } if (!a()) { if (b()) { c(); } }

注释和代码

  • code tell you what
  • comment tell you why

Some thoughts

  • 写代码时时刻设想你就是将来要来维护这坨代码的人。// Maintainence、Project vs Product
  • 先弄清楚问题是什么,再解决问题。// Code is the last step
  • 不要过早优化。

Duplication && Abstraction

  • DRY
  • The rule of three
  • Inheritance

Value object concept

Different Level

  • system level & application level
  • low level & high level
  • api level & business logic level

Engineer

  • 工程的本质,并不是去创造什么,而是去风险化,如何低成本、高效率、按时按量地完成既定的任务。
  • 好的解决方案不一定要采用最新的技术和框架,而是体现在实现的细节中,朴实无华但又足见功底,所以放下浮躁的心,放下对那些所谓新技术的追逐,扎实打磨基础,反复推敲方案,选择合适的技术去解决问题。