如果只能推荐一本书的话,我推荐A Philosophy of Software Design,这本书尝试回答一个问题“怎么写出好的代码“
搬了几年砖后,渐渐的我的想法是,一个程序员,只要他有 想写好代码 的心,其实已经打败非常多的从业者了。很多从业者也并不想要写好代码,只是想早点做完需求而已,或者干完这顿就跑路。编程对于每个人的意义不一样,人各有志。但是,如果有了想要写好代码的决心,自己会自然的去学习了解其中的乐趣,最后的积淀也会比别人要多
至于编程相关的知识,其实我觉得有很多细分的方向,就单单说“写好的代码”这一栏,可能你需要掌握的知识就有:
- 设计模式:比如说,一个很简单的事情,现在得在原来的代码上加一个新功能,我是单独加个类呢,还是在之前的类里拓展,如何拓展?
- 语言特性:就比如说如果是C++工程师,小到unsigned, size_t这样的特性,可能就会决定会不会遇到奇怪的问题
- 一些常见又很难以掌控的问题:比如,多线程编程…
等等…
不过我个人觉得,编程思想,分为道与术。如果有了想写好代码的决心,那么至少很难写出太差的代码。而真正的提升编程能力,是一个无限长的过程,因为计算机是个无底洞…当然,这也是它的优点,可以用一辈子来探索,入股不亏
回到正题,这本书是我觉得真正的回答了我“如何写出好的代码”这个问题的一本书,醍醐灌顶。这本书我觉得道出了编程思想的“道”,有了这个“道”之后,可以用其他书去提升自己的知识体系,因为道和术本来就是相辅相成的。
它说的是,软件设计的核心是降低系统的复杂度。这个复杂度有很多方面,绝非简单套用设计模式就可以解决。开发过大型软件的同学可能会有一些感受,当设计过于抽象,可能会带来读不懂的问题;当设计抽象程度过低,想改个东西要动的地方更加痛苦;有一些似乎看起了应用了设计模式的代码其实给后续改动带来了灾难。我有一个朋友说过“过度设计和不设计都会带来问题”。这本书就好在给了我一个方向,如何去写好的代码。我自己之前写过一些笔记:
软件设计的哲学2: Modules Should Be Deep
然而,一本好书基本上是字字珠玑,还是需要本人去阅读才有体会。
