①代码主要是为了写给人看的,而不是写给机器看的,只是顺便也能用机器执行而已;
②提炼函数:如果需要花时间浏览一段代码才能弄清楚它到底要干什么,那么这时候就应该将其提炼到一个函数中,并根据它所做的事命名。以后再读这段代码时,一眼就能知道这个函数的用途;
③函数参数化:如果发现两个函数逻辑非常相似, 只有一些字面量值不同, 可以将其合并成一个函数, 以参数的形式传入不同的值, 从而消除重复;
④使用策略模式替换 “胖” 分支:当 if-else 或者 switch-case 分支过多时可以使用策略模式将各个分支独立出来;
⑤提炼变量:一个表达式有可能非常复杂且难以阅读。这种情况下, 可以提炼出一个局部变量帮助我们将表达式分解为比较容易管理的形式 ,这样的变量在调试时也很方便;
⑥内联变量:用变量右侧表达式消除变量,当变量名字并不比表达式本身更具表现力时可以采取该方法;
⑦封装变量:将变量封装起来,只允许通过函数访问,对于所有可变的数据, 只要它的作用域超出单个函数,就可以采用封装变量的方法。数据被使用得越广, 就越是值得花精力给它一个体面的封装;
⑧拆分阶段:当看见一段代码在同时处理两件不同的事, 可以把它拆分成各自独立的模块, 因为这样到了需要修改的时候, 就可以单独处理每个模块;
⑨拆分循环:当遇到一个身兼数职的循环时可以将循环拆解,让一个循环只做一件事情, 那就能确保每次修改时你只需要理解要修改的那块代码的行为就可以了。该行为可能会被质疑,因为它会迫使你执行两次甚至多次循环,实际情况是,即使处理的列表数据更多一些,循环本身也很少成为性能瓶颈,更何况拆分出循环来通常还使一些更强大的优化手段变得可能;
⑩拆分变量:如果变量承担多个责任, 它就应该被替换为多个变量, 每个变量只承担一个责任;
⑪分解条件表达式:在带有复杂条件逻辑的函数中,往往可以将原函数中对应的代码改为调用新函数。对于条件逻辑, 将每个分支条件分解成新函数可以带来的好处:
1、提高可读性;
2、可以突出条件逻辑, 更清楚地表明每个分支的作用,
3、突出每个分支的原因;
⑫合并条件表达式:当发现这样一串条件检查:检查条件各不相同, 最终行为却一致。如果发现这种情况,就应该使用 “逻辑或” 和 “逻辑与” 将它们合并为一个条件表达式;
⑬以卫语句取代嵌套条件表达式:如果使用 if-else 结构,你对 if 分支和 else 分支的重视是同等的。这样的代码结构传递给阅读者的消息就是:各个分支有同样的重要性。卫语句就不同了,它告诉阅读者:“这种情况不是本函数的核心逻辑所关心的, 如果它真发生了,请做一些必要的整理工作,然后退出。” 为了传递这种信息可以使用卫语句替换嵌套结构;
⑭将查询函数和修改函数分离:如果遇到一个 “既有返回值又有副作用” 的函数,此时可以将查询动作从修改动作中分离出来;
(参考:mp.weixin.qq.com/s/UUCR42jFz…