关于如何学习优雅的代码和如何避免写恶心的代码,代码的24中坏味道给出了答案。一并给出重构解决方法。
代码的24中坏味道:
1.不恰当的/神秘的命名:最好用业务目的命名,不要用过程命名。
2.重复代码:用函数封装一下,调用函数。
3.过长的函数:短小精炼的函数是我们需要的,过长说明实现了太多功能。
4.过长的参数列表:可以把参数按照对象封装。
5.全局数据:public和private的数据最好不要出现,把变量定义在局部函数内部。
6.可变数据:最好不要改变数据本体,去创建副本。
7.发散式变化:坚持面向对象的单一职责原则,一个函数只负责一个功能和变化。
8.散弹式变化:发生某种变化时,需要在多个类中修改。把同一对象的属性和方法包装起来,然后调用就可以了。
9.依恋情结:某个类的方法过多的使用其他类的成员。可能是方法没有放对地方。
10.数据泥团/基本类型偏执:用数据结构把相同对象的数据封装。
11.重复的Switch:使用类和多态把逻辑拆分。
12.循环语句:把for,while等循环语句替换为管道方法。
13.冗赘的元素:名字和实现代码一模一样,用内联函数优化。
14.预留的通用性:用各种钩子和特殊情况处理非必要的事情,代码里有一些用不上的功能。铲除。
15.临时字段:如果临时字段用的很多,收拢到一个地方统一管理。
16.过长的消息链:一长串取值函数或临时变量,提炼成函数包装起来。
17.中间人:过多转发函数让人烦躁,隐藏委托关系和删除中间人。
18.内幕交易:我觉得和中间人差不多,都是简化函数层次,直接调用。
19.过大的类:写太长代码是要被质疑的!单一功能!
20.异曲同工的类:提炼超类,消除重复行为。
21.纯数据类:行为呢?
22.被拒绝的遗赠:超类里的字段只与少数子类有关,那就移到子类里。
23.注释:试着让注释变得多余。除了用来记将来的打算,还可以记没有把握的区域。为什么做某某事。
附重构快捷键IDEA:
抽变量:CTRL+ALT+V
抽参数: CTRL+ALT+P
抽函数:CTRL+ALT+M
内联变量、函数:CTRL+ALT+N
重命名:Shift + F6
Show Context Actions万能键:Alt + Enter
模糊搜索:Shift + Shift
Surround With包代码块:Ctrl + Alt +T
Replace批量替换 :Ctrl + R