书是2015下半年买的,放床上断断续续几个月才看完。持续的时间这么长,一个是这类经典书许多论述都是精挑细选,其中有些论点可以让人回味许久,另外就是自己还处于开发初级阶段,没有像资深工程师那样十多年的技术沉淀,有些内容也就没那么快能产生共鸣,就只能多通多几遍。
书中的内容很是精炼,以至于产生要全部吸收的决心,然而没有那种精力,也深知追求完全理论的毒害不小,于是,在闲暇之余,记录书籍中自己仍然印象深刻的几点,我相信这些论述对我们这类初级程序员都是有了解价值的!
1. Don’t programming by coincidence – 不要靠巧合编程
程序员成长之路经常会遇到的问题:
昨天还正常运行的代码,今天怎么就不行了?
我前几天为了解决那个bug改了一个不太理解的地方,今天因为他出了一堆错误!
——这个地方为什么加这个语句?——不知道,反正不加,XX地方运行会有问题。
…
出现这些问题,大多是我们的“靠巧合编程”所造成的。技术都有突破口,我们是初期的学者,会有一些不懂不太理解的技术栈需要被引用,这时候大多数人的做法是代码不理解不要紧,重要的是能用!其实这是不可取的,很多隐患就在大家“靠巧合编程”中不断累积,待到你的项目爆发时,那时只有欲哭无泪!我们要做的应该是只编写自己熟悉的代码,只引用自己能理解的例程,虽然苦,但项目的每一步进展都能在你心中有数!
2. Refactor often – 经常重构,做一个优雅的程序员
永远不要忘了石头汤和煮青蛙的故事,人们的需求总是希望建立在一瞬间完成,而忽视了短期积累的利害。修改代码的次数要远大于生产代码,因此,为了你项目后期的维护以及扩展,请在开发阶段就经常重构,一个良好的代码设计的重要性是不可估量的!
3. 工欲善其事,必先利其器 – 改善使用工具的习惯
每个工匠都有一套属于自己的工具,新工具再好,他们也不会轻易更换,因为工匠们对于自己的工具更趁手,他们熟悉这些工具。工具随着时间被打磨,工匠与他们也在不断磨合。
程序员在工具上的使用上也该如此。在编辑器、源码控制等方面选择属于自己的工具,不断打磨他们,让他们在自己手中的运用达到出神入化!工具的选择也是一门学问,例如编辑器,我们可以在尽可能多的场景下使用他们,日常编程、脚本编写甚至自己日常的笔记记录,这就要求你的编辑器具备跨平台、使用广、轻量等特点。于是,我们从现在开始,应该摒弃庞大的IDE,学习熟悉一款适用更广的编辑器来编写代码,例如Sublime Text, Emacs甚至Vim。记住,先选择好你的工具,然后坚持使用他,不断熟悉了解工具的快捷操作(编辑器的快捷键),并且能清楚知道他的优劣。
4. 注重实效 – 权衡利弊,不追求完全主义
程序有开发效率和运行效率的矛盾,我们大多懂得在自身的需求上取之平衡,而在有些方面上,有些人就会偏执了。测试代码和执行代码对我们的项目都是很重要的一员,但我们不能由于书中对测试代码的各种益处就非要做到百分百测试覆盖,因为这就属于偏执了。在代码的重构上,我们上述虽然提到了很多重要性,但仍要在注重实效的基础上进行重构,如果有些重构降低了许多效率,你就可以选择弃用了。永远把实效放在第一位!