首页 > 编程语言 >《程序员修炼之道 从小工到专家》第六章读后感

《程序员修炼之道 从小工到专家》第六章读后感

时间:2022-12-21 14:55:16浏览次数:43  
标签:读后感 重构 小工 编程 向导 程序员 算法 测试 代码

第六章为当你编码时,共有五节分别是:靠巧合编程、算法速率、重构、易于测试的代码、邪恶的向导。

靠巧合编程中讲在编码时应该注意的各类事项。传统智慧认为,项目一旦进入编码阶段,工作主要就是机械的把设计转换成可执行语句。我们认为,这种态度是许多程序丑陋、结构糟糕、不可维护的最大一个原因。编码不是机械工作,要想让程序长久无误的运行,每一分钟都需要做出决策,且需要对这些决策进行仔细的思考和判断。靠巧合编程即代码正好是可运行的,至于为什么能够正常运行,却不清楚。这是我们应该极力避免的。

算法速率中讲注重实效的程序员几乎每天都要使用估算,估算的资源包括:时间、处理器、内存等等。估算算法即是我们熟知的时间复杂度,用O()表示,它有以下几种常见类型。O(1),常量时间,不随数据的多少变化O(n),线性时间,简单的循环O(m*n),嵌套循环O(log(n)),二分法,平衡二叉树的查询O(nlog(n)),分而治之,快排O(2^n),指数级,斐波那契数列不同的时间复杂度在达到一定数量级的时候将相差很多,所以某些情况我们要想方设法优化算法的效率。我们主要需要关注的是是复杂度的阶。在确认了算法之后,还需要对其进行测试。最好的并非总是最好的,是否使用最优算法,还需要根据我们遇到的实际情况。有时数据量很小的情况,算法的效率是可以忽略不计的。

重构中讲重写、重做和重新架构代码合起来,称为重构。当代码出现以下特征,就应该考虑重构了:出现重复内容,违反DRY原则。非正交的设计。知识过时了,或者你对某部分的了解更深一步对性能造成了影响。重构的原则:早重构、常重构。重构面临的敌人通常都是时间,但这个借口并不成立,因为之后由此引发的时间额外消耗很可能更多。如何重构。不要试图在重构的同时增加功能。重构之前,确保拥有良好的测试。采取短小,深思熟虑的步骤,不要一次改动太多内容。

易于测试的代码讲软件 IC 是人们在讨论可复用性和基于组件的开发时喜欢使用的比喻。意思是集成电路芯片可以很容易的进行组合,我们希望软件开发也能达到这个效果。芯片的设计有完善的测试,同样的软件开发也可以做同样的事情。针对合约进行测试及为测试而设计,即 TDD 测试驱动开发。编写单元测试,对比较大的项目,将每个测试都放进一个子目录。使用测试装备。构建一套完善的测试体系,它能够记录测试状态,分析输出结果是否符合预期,以及选择和运行测试。推进测试文化,尽可能完善地测试你的软件,否则你的用户就得替你测试。

邪恶的向导中向导指的是那些用于帮助我们构建程序自动生成的代码,通常他们还被称为脚手架。为什么称向导(wizard)是邪恶的呢,这是因为通过工具生成的代码,很容易被我们忽略,在这种情况下你编写的过程更倾向于靠巧合编程。开发每天都在使用不完全理解的事物,比如集成电路的工作原理,处理器的中断结构、用于调度的算法、各种系统库的工作机制等。需要注意的是,这些属于底层依赖,他们也是向导,但不是应用本身的一部分,我们可以对这部分有所了解,但他们不属于邪恶的向导。

标签:读后感,重构,小工,编程,向导,程序员,算法,测试,代码
From: https://www.cnblogs.com/mine-my/p/16996269.html

相关文章

  • 《程序员修炼之道 - 从小工到专家》读后感(五)
    第5章弯曲或折断1.解耦与得墨忒耳法则函数的得墨忒耳法则试图使任何给定程序中的模块之间的耦合减至最少,它设法阻止了你为了获得第三个对象的方法的访问而进入某个对象,......
  • 《程序员修炼之道 - 从小工到专家》读后感(六)
    第6章:当你编码时本章主要讲在编码时应该注意的各类事项。传统智慧认为,项目一旦进入编码阶段,工作主要就是机械的把设计转换成可执行语句。我们认为,这种态度是许多程序......
  • 《程序员修炼之道 - 从小工到专家》读后感(七)
    第7章在项目开始时在项目开始之前。本章节讨论了在项目开始之前的一些建议。第36节需求之坑从本节开始进入了第七章节:在项目开始之前。本章节讨论了在项目开始之前的......
  • 《程序员修炼之道 - 从小工到专家》读后感(八)
    第8章注重实效的项目第41节注重实效的团队1、书籍的前几章讲了几条如何成为注重实效的开发者的建议,当然他们也对团队有所帮助,如果个体都是注重实效的,那他对整体起的作......
  • 程序员面试找替身 “作弊” 入职,结果大快人心。。。
    整理|郑丽媛,出品|CSDN(ID:CSDNnews)在近几年的大环境影响下,线上笔试/面试愈发流行,这也给了部分人“钻空子”的机会——除了笔试作弊(上网搜代码),现在连面试都能找“替身”......
  • #yyds干货盘点# LeetCode程序员面试金典:节点间通路
    题目:节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1:输入:n=3,graph=[[0,1],[0,2],[1,2],[1,2]],start=0,target=2输出:tr......
  • 语音合成神器丨民间大佬开发的小工具,使用无任何限制!
    语音合成小工具软件介绍这一款软件界面还挺高大上的,主页是一只行走中的斑马。锲而不舍,金石可镂,看样子作者也是花了时间和精力的。如图所示,这是一款语音合成软件,它除了......
  • 程序员的十层楼
    作者简介:周伟明先生毕业于上海交通大学,1994年开始从事专业软件开发,曾工作于美国加州硅谷的DASCOMInc公司(现为IBM的全资子公司)和华为技术有限公司等企业。在网络安全软件、......
  • Git 笔记 - 程序员都要掌握的 Git
    前言本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下此文是为以后学习,工作,开发中如果遇到问题可以回过头来参考参考。因为水平有限,难免会......
  • #yyds干货盘点# LeetCode程序员面试金典:动物收容所
    题目:动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物......