`
0428loveyu
  • 浏览: 30844 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

《修改代码的艺术》 - 书摘精要

 
阅读更多
(序) 需求总是在改变;

(前言)

没有编写测试的代码是糟糕的代码;

编程可以是一项回报丰厚并让人感觉是一种享受的工作;

(P4) 在不改变软件行为的前提下改善其设计的举动称为重构;

(P6)

问题总是不可避免;

要想保持熟练,唯一的途径就是经常练习;

(P8) 精湛的软件改动就像精湛的外科手术一样,除了细心之外还要有深厚的技术。如果没有辅以正确的工具和技术,即便“小心下手”也起不到多大作用;

(P11) 一个需要耗时十分之一秒才能执行完的单元测试,就已算是一个慢的单元测试了;

(P14)

依赖性是软件开发中最为关键的问题之一;

遗留代码的困境 —— 我们在修改该代码时,应当有测试在周围“护”着。而为了将这些测试安置妥当,我们往往又得先去修改代码;

(P22) 遵循为独立单元编写测试的理念,我们最终写出来的就会是短小而易于理解的一个个测试,这会使得我们的代码变得更易理解;

(P40) 重构 —— 对软件内部结构的一种调整,目的是在不改变软件的外在行为的前提下,提高其可理解性,降低其修改成本;

(P72)

依赖倒置原则 ——

如果你的代码依赖于一个接口,那么这个依赖一般来说是很次要的。除非这个接口发生改变,否则你的代码是无需改变的,而接口的改动频率通常情况下要远远低于接口背后的那些代码。在接口不变的前提下,不管是修改实现了该接口的类,还是添加实现了该接口的新类,接口的客户代码都不会受到影响;

因为这个原因,较好的做法是让代码依赖于接口或抽象类,而不是依赖于具体类。当代码依赖的是较为稳定的东西时,因特定改动而导致大规模重编译的可能性也就被降到了最低;

当为了解依赖而往设计中引入了额外的接口和包之后,重新构建整个系统的时间就会稍微变长一点。因为有更多的文件要去编译。但基于需要被重编译的文件而进行的局部重建的平均时耗反而大大缩短了;

(P79) 测试驱动开发与遗留代码 —— 测试驱动开发的最有价值的一个方面是它使得我们可以在同一时间只关注于一件事情。要么是在编码,要么是在重构;永远也不会在同一时刻做两件事情;

(P116) 好的设计应当是可测试的,不具可测试性的设计是糟糕的;

(P180) “CRC” —— “类”(Class)、“职责”(Responsibility)和“协作”(Collaboration);

(P200) 单一职责原则 —— 每个类应该仅承担一个职责:它在系统中的意图应当是单一的,且修改它的原因应该只有一个;

(P212) 接口隔离原则 —— 如果一个类体积较大,那么很可能它的客户并不会使用其所有方法。通常我们会看到特定用户使用特定的一组方法。如果我们给特定用户使用的那组方法创建一个接口,并让这个大类实现该接口,那么用户便可以使用“属于它的”那个接口来访问我们的类了。这种做法有利于信息隐藏,此外也减少了系统中存在的依赖。即当我们的大类发生改变的时候,其客户代码便不再需要重新编译了;

(P231) 开放/封闭原则 —— 开放/封闭原则是由Bertrand Meyer首先提出的。其背后的理念是:代码对于扩展应该是开放的,而对于修改则应该是封闭的。也就是说,对于一个好的设计,我们无需对代码做太多的修改就可以添加新的特性;

(P249) 编程是关于同一时间只做一件事情的艺术;

(P260) 接口应传达职责而非实现细节,这样的接口令代码易于阅读和维护;

(P289) 提取接口时并不一定要提取类上的所有公有方法,你可以依靠编译器来帮助你发现哪些方法需要加到接口上去;
分享到:
评论

相关推荐

    swift-模仿书摘中心的展开按钮封装的一个控件

    通过这样的封装,开发者可以快速地在自己的应用中实现类似书摘中心的展开按钮效果,而无需从零开始编写复杂的动画代码。这对于提高开发效率和保持代码整洁性具有很大的帮助。 总结来说,这个“swift-模仿书摘中心的...

    编写高质量代码 Web前端开发修炼之道 书摘精要

    《编写高质量代码 Web前端开发修炼之道》是一本深入探讨前端开发实践与技巧的书籍,旨在提升Web应用的质量和可维护性。书中强调了遵循Web标准的重要性,这些标准主要分为结构、样式和行为三大部分。 结构标准包括...

    多看kindle书摘导出工具

    【多看Kindle书摘导出工具】是一种实用的软件工具,专为用户设计,用于从多看Kindle系统中提取书摘,并将其导出为易于管理的TXT文本格式。这款工具极大地提升了阅读爱好者整理和回顾笔记的效率,使得珍贵的阅读心得...

    初中语文文摘文苑微书摘

    【标题】:“初中语文文摘文苑微书摘”与我们探讨的是人生哲理与科学思考,虽然表面上看似与IT技术无关,但其中蕴含的思维方式和观察问题的角度对IT从业者同样具有启示作用。 【描述】:“初中语文文摘文摘”暗示了...

    BookSnippets:更快地存储书摘!-开源

    2. 编辑书摘:已保存的书摘允许用户进行修改,确保信息的准确性和及时更新。 3. 删除书摘:对于不再需要或者错误的书摘,用户可以方便地将其从数据库中移除,保持书摘库的整洁。 4. 搜索书摘:强大的搜索功能是...

    WPF in action 书摘 (上)

    ### WPF in Action 书摘知识点总结 #### 资源(Resource)的使用与查找路径 **资源**是WPF应用程序中的一个核心概念,它允许开发者以一种灵活且可复用的方式管理各种UI元素,如颜色、字体、图像等。 ##### 查找路径...

    一款很棒的书摘软件 微信小程序 中山大学软件创新大赛十强参赛项目.zip

    7. **源代码开源**:从压缩包文件名“JIAN-JIAN-master”来看,这可能是项目的开源代码仓库,意味着公众可以查看和学习其开发过程,对编程爱好者来说是一份宝贵的教育资源。 8. **软件创新**:软件创新不仅体现在...

    2021年读书-《心智、知识与道德》书摘:社会主义计算大论战.docx

    2021年读书-《心智、知识与道德》书摘:社会主义计算大论战.docx

    测试驱动艺术.rar

    《测试驱动艺术》是关于软件测试领域的一种创新性方法论,它强调在编写任何实际代码之前,先编写测试用例。这种做法旨在提高代码质量,减少缺陷,并促进更好的设计。测试驱动开发(Test-Driven Development,简称TDD...

    书摘_全新思维 ppt 文件

    全新思维的书摘,看看别人怎么解读这本书,希望能对您有点帮助

    《iOS6开发指南》精彩书摘

    以下是从书摘中提炼的知识点: ### 基础篇 1. **第一个iOS应用程序**:书中首先介绍了如何使用Xcode创建一个简单的“HelloWorld”程序,涵盖了工程模板的选择、应用的运行机制和生命周期、视图控制器的生命周期...

    书摘

    书摘

    初中语文文摘生活名人名言解读_书摘

    初中语文文摘生活名人名言解读_书摘

    韦尔奇新着《赢》经典书摘.EXE

    韦尔奇新着《赢》经典书摘.EXE

    初中语文文摘文苑微言与书摘

    而《初中语文文摘文苑微言与书摘》正是一本为青少年精心挑选的文章集合,它不仅涵盖了生活的方方面面,也反映出作者们对世界深刻的洞察和感悟。通过阅读这些文摘,初中生能够对人生的多样性和复杂性有一个初步的理解...

    《趁年轻 折腾吧》ppt书摘 @刘健亮PPT模板.pptx

    《趁年轻 折腾吧》ppt书摘 @刘健亮PPT模板.pptx

    《趁年轻 折腾吧》ppt书摘.rar

    通过《趁年轻 折腾吧》的PPT书摘和读书笔记,我们可以更直观地理解和吸收这些知识点,将作者的理念融入到自己的生活和工作中,激发自己的潜力,创造更加精彩的人生。而51pptmoban.com这个文件名可能是指一个提供PPT...

    peri0d的书摘.md

    一些从B站上看到的喜欢的句子,就摘抄下来保存留作纪念。

Global site tag (gtag.js) - Google Analytics