首页 > 编程语言 >程序员修炼之道第六章读书笔记与感悟

程序员修炼之道第六章读书笔记与感悟

时间:2022-12-02 17:46:18浏览次数:44  
标签:感悟 重构 读书笔记 代码 向导 程序员 理解 测试 我们

程序员修炼之道第六章读书笔记与感悟

重写、重做和重新架构代码合起来,称为重构。

当代码出现以下特征,就应该考虑重构了:

出现重复内容,违反DRY原则。

非正交的设计。

知识过时了,或者你对某部分的了解更深一步。

对性能造成了影响。

重构的原则:早重构、常重构。重构面临的敌人通常都是时间,但这个借口并不成立,因为之后由此引发的时间额外消耗很可能更多。如何重构。

不要试图在重构的同时增加功能。

重构之前,确保拥有良好的测试。

采取短小,深思熟虑的步骤,不要一次改动太多内容。、软件 IC 是人们在讨论可复用性和基于组件的开发时喜欢使用的比喻。意思是集成电路芯片可以很容易的进行组合,我们希望软件开发也能达到这个效果。芯片的设计有完善的测试,同样的软件开发也可以做同样的事情。

针对合约进行测试及为测试而设计,即 TDD 测试驱动开发。

编写单元测试,对比较大的项目,将每个测试都放进一个子目录。

使用测试装备。构建一套完善的测试体系,它能够记录测试状态,分析输出结果是否符合预期,以及选择和运行测试。

推进测试文化,尽可能完善地测试你的软件,否则你的用户就得替你测试。

这里的向导指的是那些用于帮助我们构建程序自动生成的代码,通常他们还被称为脚手架。为什么称向导(wizard)是邪恶的呢,这是因为通过工具生成的代码,很容易被我们忽略,在这种情况下你编写的过程更倾向于靠巧合编程。

这里不是抵制向导代码,而是在强调,不要使用你不理解的向导代码。如果使用,一定要清楚它的机制。

开发每天都在使用不完全理解的事物,比如集成电路的工作原理,处理器的中断结构、用于调度的算法、各种系统库的工作机制等。需要注意的是,这些属于底层依赖,他们也是向导,但不是应用本身的一部分,我们可以对这部分有所了解,但他们不属于邪恶的向导。

比如我们常常使用向导生成漂亮的界面和背后的大量代码,只要再加入具体的应用功能,软件就可以交付了,但这往往是愚弄自己,除非我们真的理解那些替我们制作的代码,否则就是在靠巧合编程。向导是一条“单行道”——它们为你制作代码,然后就走了,如果它们制作的代码不完全正确,或者情形变了,需要改变代码,那么就只能靠我们自己了。我们不是在反对向导,但如果你真的使用向导,就要理解它制作出的所有代码,这样才能很好地控制并维护自己的应用。虽说除了依赖我们不理解的向导,我们也在依赖其它很多不理解的事物,比如集成电路的量子力学、处理器的中断结构、用于进程调度的算法、系统提供的API等。但向导与它们是有区别的,因为向导生成的代码变成了我们应用的组成部分,它们一行一行地与我们编写的功能交织在一起,最后它不再是向导的代码,而变成了我们自己的代码,没有人应该制作自己不完全理解的代码。所以不要使用你不理解的向导代码。

标签:感悟,重构,读书笔记,代码,向导,程序员,理解,测试,我们
From: https://www.cnblogs.com/2351920019xin/p/16945173.html

相关文章

  • 即将迈入,程序员35岁的坎
    鄙人生肖马,虚岁34,再过一年,就会进入大龄程序员的圈子35这个数字似乎对程序员很不吉利,犹如一道分水岭,一侧是朝气蓬勃,一侧是无声叹息,朝气蓬勃的一侧,无数个码奴在奋笔疾书,而另......
  • 【Java编程思想】读书笔记(二)第六章---第十章
    Java编程思想(第四版)学习笔记第六章---第十章第六章:访问权限控制6.2Java访问权限修饰词第七章:复用类7.1组合语法7.2继承语法(extends)7.4.2名称屏蔽(重载)7.6prote......
  • 关于电脑选配感悟
    首先说明 本人也是小白一枚如有误区,欢迎指正关于笔记本选配首先:笔记本首要考虑 1.笔记本配置一般不具有太多延展性所以在选配的时候大家要尽量把配置选的高一些......
  • 《项目管理中的8项人际关系技能》读书笔记1
    刚开始读,这个书不错,笔记一下。1)解决个人绩效问题的ERAM模型 E(期望,Expectations),R(资源,Resource),A(Ability,能力),M(Motivations,动机),这四点,用来做绩效辅导的时候是不错的......
  • 读书笔记:要看到威胁 中的需求
    在汪小金老师的《项目管理创造源来的价值》一书中,有一个说威胁中可以看到需求的不错:......
  • 《改善对话读书笔记1:4R法》
    开始使用4R法时,你需要以书面的方式记录对话。在2.5节中,我们将会对我们首选的双栏对话分析法进行讲解。你可能不是很想使用纸笔,而是只在你的脑海中思考对话内容,或者与朋友......
  • #yyds干货盘点# LeetCode程序员面试金典:一次编辑
    题目:字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 1:输入......
  • Mac开发利器之程序员编辑器MacVim学习总结
    Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神。至于两者到底哪个更好用,网络上两大派系至今还争论不休。不过,相比之下,Emacs更加复杂,已经不能算是......
  • 易经的新感悟
    上一篇博客有谈到易经的占卜。就我个人认为,人其实是一种比较没有远见的动物,于此,我们便萌生了用占卜来预测未来吉凶。于此,我发现它衍生出了一个问题。假设我占卜到一个很吉利......
  • 重构:改善既有代码的设计 第八章 读书笔记
    第8章搬移特性8.1搬移函数(MoveFunction)在对象之间搬移函数;8.2搬移字段(MoveField)在对象之间搬移字段;8.3搬移语句到函数(MoveStatementsintoFu......