1. 复杂度不会消失,只会转移

  • 新建工具类文件,把一些判断的逻辑抽离出去

2. 抽象,就是像做数学题一样总结一种方法

  • 把具有相同作用的逻辑提取出他们的公式
  • 先拆分,后重构
  • 独立功能的函数可以单独新增一个文件存放,然后进行调用
  • 在传参为空时,给出默认值和校验提示,防止一些调用引发的BUG

3. 默认值,数据类型校验和try/catch/finally语句,是保护程序安全运行的三剑客

  • 同时减少/不用log,用具体的warn和error代替
  • 必要时可以进行过饱和校验

4. 文件放入文件夹,分类排好,把代码按照功能分离,放入相应的文件夹中

  • 就像收拾衣服一样,把不同季节的打底衣服,外套,内衣裤分开放

5.减少因为版本更迭产生的重复而无用的逻辑,代码,变量和死循环

  • 根据热力学第二定律,孤立系统的熵永不自动减少,熵在可逆过程中不变,在不可逆过程中增加。
  • 整个项目只调用一次的函数抽象应该和调用者函数合并

6.编写文档和注释

  • 写自己看得懂的注释,写完以后要自己使用和检查

7.在重构时就会体会到面向对象和函数式编程对比面向流程的优点

  • 一但流程变动,整个链条都会断掉
  • 灵活使用语法糖,避免回调地狱和if...else嵌套

8.单一函数内不要聚合过多功能,不然很容易造成死循环

  • 把复杂的逻辑写简单,也是一种学问
  • 同一个函数内部最好只处理一个模块功能,并能形成内部闭环
知乎答主justjavac的一句话解决了我脑中一直以来的困惑:“优化的本质就是给V8写代码。如果是业务代码,要优雅,写给人看;如果是库代码,要高效,写给V8去运行。”
原话来源:https://zhuanlan.zhihu.com/p/...

9.当逻辑过于复杂时,可以画功能的流程图帮助分析

10.减少使用sessionStorage等全局变量,多使用形参,以防止一些变量变动造成的偶发性的BUG

  • 针对同一个变量进行的操作,可以抽象到同一个函数之中,类似于Flux

11.使用动画效果和启动页来掩盖系统和网络的卡顿,替换延时的逻辑

  • 大部分的loading场景来自于网络波动和数据库操作,如果运算占用了很长的时间,就要考虑代码的合理性和小心内存溢出
  • 用提示语告诉用户你在做什么,而不是让用户觉得程序本身很卡
  • 增加系统动画,减少造成系统延迟的逻辑

陈德立
1 声望0 粉丝

前端开发工程师