重构不是银弹
成书时,面向对象尚是小众,而如今函数式编程已开始流行
时至今日,重构的大部分思想以及方法,有点追求的程序员都略有耳闻,如果是 Java
程序员,更是不想知道都难
发展至今,重构已经类似于编码的一部分了
此书 1 2 3 章已把重构是什么以及什么时候重构说清楚了,应该细看
4 5 6 7 8 9 10 11 都是具体的方法,熟悉 Java 的可以对应着看一下
之后的章节大略过一下就行了
曾经在学校里刷了《代码大全》,所以,再看此书,相对就没那么重要了
比如虽然我 iOS 弱爆了,但看到现在公司的项目,上来蹭蹭蹭几百行的函数,大量的重复代码,各种神奇数字,也是醉了
当然这并不是说之前项目不好,毕竟大家都有被 deadline 逼成傻逼的时候
总得来说,此书还是应该过一遍,毕竟封面印着:
普通程序员进阶到编程高手必须修炼的秘籍
因为不看的话,可能意识不到一些前人路过的坑
像我对临时变量的理解就不妥
还有以前写函数过于随意,像参数不带 let
,不暴露的也没加 private
比较有启发的是:
- 消除 临时变量
- 多态 替换 Switch
- Null Object
目前做 iOS 的时间尚短,属于初级程序员,不懂的地方巨多,每每在试错中做功能,写的时候这些东东也就统统忽略了
虽然时常想着功能 OK 后立即重构,但人都有惰性,往往看到能跑了就万事大吉,然后把整理代码的希望寄托在重构上
比较理想的情况是:
版本控制 + Review + 结对 + 重构 (目前的公司好赞啊,已实现了大半)
但这又让我想起了 Fred Brooks 在 1987 年所发表的一篇关于软件工程的经典论文 ——《没有银弹》
重构当然也不是银弹
只能重写了少年