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场景来自于网络波动和数据库操作,如果运算占用了很长的时间,就要考虑代码的合理性和小心内存溢出
- 用提示语告诉用户你在做什么,而不是让用户觉得程序本身很卡
- 增加系统动画,减少造成系统延迟的逻辑
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。