《程序员修炼之道:从小工到专家》四到六章读后感
注重实效的偏执
该章节第一个小节即是按合约设计,这里的合约并不是客户和程序员之间的合约,而是代码编写的规则条约,这能帮助我们编写代码更加格式化,从而减少bug的产生,让变更更加地简单易行。比如,我们要编写保护性代码。要对输入的数据进行不断的检验,确保输入数据没有问题再运行合适的代码。我们要让真正实现功能的代码懒惰,让它尽量少地工作,让它仅仅处理那些传入合适的代码,并且返回内容尽可能的简单明了,你总不能允诺函数返回一个世界吧,这样也是为了保证代码明了,不容易出bug。在程序中,我们要实现这样一个结构:断言+规范的输入+功能代码+尽量少的规范化的输出。其中断言是看似没有意义,实则是不可或缺的。它往往检验的是那些看似不可能发生的情况,但实际上,那些不可能发生的情况也恰恰说明程序出了问题,有了断言,我们能尽早的发现那些bug,尽早解决,而不是留到最后,bug一个一个堆起来。最后一部分则是配平,对计算机资源的合理调用。程序员就像一个在马戏团扔小球保持平衡的小丑一样。需要同时对多项内容进行管理。比如内存,进程,时间等等。而如何配平则是程序员的大学问。
弯曲或折断
该章节主要强调的是代码的可改变性,代码必须具有足够低的耦合性,才能适应不断的改变。第一个小节讲述的是德墨忒法则与解耦合。该小节强调使用函数的德墨忒法则去编码,降低程序的耦合性,以此来简化程序的结构,让程序便于维护和管理。第二个小节则是介绍了元程序编程。让数据井然有序,去管理数据的数据,以此来便于维护。第三个小节讲述的是时间耦合。在编程中的时间貌似没那么重要,真正重要的是次序——程序运行的次序。要对工作流进行分析,以改善并发性。然后讲述的是可视化窗口的问题。窗口必须保持洁净。换句话说,有必要的东西才放在窗口,给客户展示。这里只放着重要的数据,而不是数据的垃圾站。最后一个小节是黑板。“黑板”的作用是协作工作流。在实际编程过程中,项目可能规模会很大,很多事件需要并行处理。而“黑板”这一角色实际上是保证各个任务尽量相互独立,同时满足工作流的顺序,一方面优化运行效率,一方面让各个工作流并不相互影响。
当你编码时
第一个小节讲述的是“偶然性编程”。在我理解下,就是程序员要时刻知道自己在做什么。因为程序运行并不意味着它是完全正确的,它的边界,它的条件等可能是经不起推敲的。在这种情况下,你误以为的正确引导着你一步步走向更大的错误。第二个小节讲述的是算法效率,在这部分提到了算法估计法,对算法的时空效率进行预估,来使用合适的算法,以保证程序运行更加稳定,性能更优。第三个小节讲述的是重构方面的知识,你的代码出现了bug,你要修改它,你是会添加些补充还是重构它?作者给出了答案:当你的代码重复,正交性不足或者过时,效率过低时,不要犹豫,对它使用重构吧。时间不足不是不进行重构的理由。重构是为了更快更好地完成任务,而且重构之前必须想清楚,记清楚,想清楚重构的目的,不要临时加入新的功能,那很可能导致未知的错误,记清楚程序之前的作用。以便于在由于重构导致的一些问题,能够快速地发现他并解决。最后的部分是调试。你必须时刻注重代码的模块化,时刻注意,让你的代码有层次,每个包是可测试的,每个函数是可测试的,如果你不对你的程序进行测试,那么会是客户测试它。