虽然本书所提供的实例、代码均源于java,但是不管我们是使用什么编程语言,编写出"好代码"对于一个想成为优秀的程序员都应该是最基本的。
良好的方法命名、适宜的注释、短小的方法、各种环境下的变量命名等等,这都是大师在多年编程中总结下来的经验之谈。
在网上经常会看到很多牛人是这么说的:“项目要注意可扩展、灵活性”、“要为以后的需求变更提供好的接口”、“要灵活使用设计模式”等等,仿佛各种各样的项目功能,在设计之初就已经是如此完备,能应付各种各样突如其来的需求变更,能一下子构建出如此完备的功能,更是我们这些新手所不能及,所崇拜的。
然而通读本书之后,我得到的体会则是一开始编写完成的功能都是丑陋的并不可能如此完备,不可能想的如此周到。能编写出如此功能完备的代码,也是要经过多次修改,随着需求的不断增加而完善的。作为一个优秀的程序员,对于“坏味道”的代码不会置之不理的,他们总会花更多的时间去编写“好代码”。他们在编码过程中不仅仅是完成任务,更多的时间花在编写“好代码”,最终就会出现我们所见到的更具可扩展、灵活性好,能更好的应对未来的需求变更。
可能会有不少人反对这些说法,项目在赶工阶段时间是那么的宝贵,然而就开发而言,其实真正开发的时间大约占开发总时间的30%,而绝大部分的时间都是花费在无限的BUG修改、需求变更、测试上面,也许我们多花10%的时间在构建“好代码”上面,换回来的却是不一样的。
也有人会有这样的想法,对于老板来说,能按时完成公司要求的任务就行,然而时间紧迫的情况下,我们花费如此之多的时间在将“坏味道”代码改造为“好代码”上,老板也不会赞扬,反而会对我们的编码效率、能力有着大大的怀疑。这种情况的确是大多数程序员不得不对“坏味道”代码置之不理的原因,然而大家有没有想过,我们对“坏味道”代码置之不理,将来要回来面对并收拾烂摊子的仍然是我们自己(可能有人会暗中庆幸自己已经离开,这些烂摊子有其他人去处理)。
如果当初我们多花一些时间去编写“好代码”,在今后的修改当中,会给我们带来不少省心的事情,编码也是熟能生巧的,我们花费更多的时间在编写“好代码”上,对于“好代码”我们的经验也会更多,在开发当中,也能让其他人感觉到“好代码”所带来的各种好处。对于其他的同事而言,“好代码”能让他们迅速理解代码所代表的意思,更清晰的了解到功能所起到的作用,各个函数之间的关系。
就像大师举的例子,写一篇文章,先写一个草稿,然后一遍遍的修改,最后得到一片好的文章一样,“好代码”犹如好文章,赏心悦目、条理清晰、方便阅读等。
“好代码”并非一蹴而就的,而是经过一次次重构、迭代产生的,正如编程不仅仅是一门技术,更是一门艺术。虽然我们不可能一下子就通过重构编写出“好代码”,但是随着长时间的不断练习,每一次的编写过程当中,我们都能有所体会,经验也会越来越多,那我们离编写“好代码”的优秀程序员也越来越近。
这是我个人在阅读完该书的想法,有不足之处希望各位指出,谢谢!