Tychlog

Read

《代码整洁之道》Clean Code

Clean Code这本书读了许久才读了一遍,不同于之前读到的一些方法性的书籍,该书有更多的细节,但其中又存在许多理论性的东西,要消化它们可不是很容易。读完一遍后又快速回顾了一遍,马上又会发现很多新的东西并有一些新的理解,甚至让我觉得写这篇文章有点太急了,不过我还是应该尝试收集一些有营养的东西,至少记录现在的想法,相信对之后的第二遍阅读会更有益处。

书名其实有点误导我,或者说它不仅仅是其字面意思那样简单,‘整洁’不是简单的清洁,其主旨在于一种设计上的精巧。书的开篇就引用了几位大牛对代码整洁的解释来描述其意义。从抽象的描述中说,整洁代表着优雅、愉悦、精巧、简单,具体来说我觉得有以下几点:

  • 易于维护,依赖简单。
  • 设计精巧,没有改进的余地。
  • 高可读性,意图一目了然。
  • 完善的测试与错误处理。
  • 没有重复,最精简的实体。

最后作者总结为深合已意,其实说起来简单,可做起来却不是这么容易的。代码可不是一块光秃秃的地板,只要使劲擦总能变整洁的。

《编程珠玑》Programming Pearls

Programming Pearls《编程珠玑》这本书读完感觉很诡异,在读的过程中感觉很有收获,但是却说不清从书中获得了什么,好像什么也没读懂。说实话,很难对这本书归类,有时它告诉你的是实际操作的性能问题,有时又在讲算法或者数据结构。不过确切的说,它告诉我们的是一种无招胜有招的境界。无论是实际操作、算法还是数据结构都是在为项目服务的,我们的目的只有一个,那就是完成项目。

一个项目与一个科研课题的区别就是它需要被实践,需要一种行之有效的解决方案。在一个系统被部署到实际环境中时,有时可能需要它无比精准,有时是快速运行,有时是超低成本,或者也有可能是兼而有之的权衡。此时工程师就需要调整一切可以调整的东西去满足这些需求,这些东西自然就是硬件环境、算法、数据结构了。作者Jon Bentley要告诉读者的就是这些调整所需要的手段。

《重构》Refactoring

Refactoring以前上学的时候其实大概读过这本书,但是那时没有什么项目经验,对于重构还很难理解其意义,最近因为又读了一遍这本书,发现确实是很棒的一本书,虽然现在写javascript,而这本书是以java为基础的,但仍然有很多值得参考的地方,尤其是一些常见的重构手法,让人看的时就会觉得对对对,确实经常这么干,比如Extract method还有Replace array with object等等都可以应用到其他环境中。

阅读这本书最重要的首先是需要理解的是什么是重构,以前也自诩会定期重构代码,但现在想想,其实真正算作重构的时候并不多,大部分时候我们其实只是在重写,只是因为项目规模较小,所以许多问题并没有暴露出来罢了。

先看看重构的定义:“对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本