热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当你修改了一行代码......

程序员书库(ID:OpenSourceTop)编译链接:http:www.thisprogrammingthing.com2017Lessons-Learned-From-Work

程序员书库(ID:OpenSourceTop) 编译
链接:http://www.thisprogrammingthing.com/2017/Lessons-Learned-From-Working-Effectively-With-Legacy-Code/

技术图片

如若不想让上图这种情况发生在自己身上

请往下看吧,有本书能拯救你

作为投资自己的一部分,我决定每年都阅读四本不同的编程/管理书籍来提高自己,对于第一季度,我读了《修改代码的艺术》,这本书我是到第一季度就已经读完了,直到现在才发布这篇文章。这篇文章是我让自己对实际阅读负责的方式。


《修改代码的艺术》

技术图片

● 豆瓣评分8.2

● 修改代码技术的又一里程碑式的著作


主要内容

本书是继《重构》和《重构与模式》之后探讨修改代码技术的又一里程碑式的著作,而且从涵盖面和深度上都超过了前两部经典。书中不仅讲述面向对象语言(Java、C#和C++)代码,也有专章讨论C这样的过程式语言。

本书的主要内容是,帮助读者编写可添加单元测试的代码,并把它当成代码中最重要的指标,及时测试代码可能会让你得出一些不太理想的解决方案,曾经我是一个完美主义者,对这种做法并不理解;但后来我开始考虑遗留代码的问题,以及将他如何重写,才能使之测试正确,当我将书中的一些技巧应用到自己的工作中去,我才真正理解了这种做法是如何让你的代码变得更好的。


书中的亮点

这本书里有很多有用的信息。我想我应该分享一些我在阅读这本书时看到的一些好内容

行为对于软件来说是最重要的一样东西。软件的用户要依赖于软件的行为。用户喜欢我们的软件行为(前提是新的行为确实是他们所需要的),但如果我们改变或删除他们原本所依赖的行为(引入Bug),那么,他们就不会再相信我们。

我认为这句话足以说明一切了

一个需要耗时0.1秒才能执行完的单元测试就已经算是一个缓慢的单元测试了。

读完这段话后,我检查了我们自己单元测试,发现这句话并不总是对的,我希望找到一种方法,把它作为单元测试的一部分添加进来,这是我知道我们应该去做的事

当需要往一个系统中添加新特性且这个特性可以用全新的代码来编写时,建议你将这些代码放在一个新的方法中并在需要用到这个新功能的地方调用这一方法,你可能没法很容易地将这些调用点置于测试之下,但至少可以为新编写的那部分代码进行测试。

这只是一个测试的例子,但它在实践中非常有效。

要想知道能否在测试用具中实例化一个类,最佳途径就是试一试,编写一个测试用例并在里面创建该类的对象,编译器会告诉你代码工作其来还需要哪些东西

有优点也有缺点

第一个是书中针对面向对象语言,我的工作中主要使用PHP,有些章节(尤其是关于非oop语言的章节)无我来说不太有用,正如我经常和我的同事讨论这本书,如何让书中的示例适用于PHP,如果我能够掌握书中的内容,这可能是我接下去要研究的方向

第二个是最后一章是最难的,其中包括解释如何重构代码的方法,虽然我不知道是否还有其他方法来解释这一知识点,我只知道读这一章的时候,我只想着快点结束,或许它更适合把最后一章做成备忘录的形式,因为很少有人能一下子就把这些知识都记住


最后总结

总而言之,我强烈推荐本书,它已经被我添加到新员工必读的书单当中去,我打算读第二遍,因为有太多的信息需要消化,它却是能够提高我的单元测试能力。

你们是否读过这本书呢,觉得这本书如何,欢迎留言和大家分享。

当你修改了一行代码......



推荐阅读
author-avatar
小太郎在路上_439
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有