首页 > 编程语言 >《程序员修炼之道 - 从小工到专家》读后感(四)

《程序员修炼之道 - 从小工到专家》读后感(四)

时间:2022-10-31 19:58:09浏览次数:34  
标签:读后感 异常 小工 解除 程序员 模块 合约 代码 资源

第四章:注重实效的偏执

在生活中检查每一个可能的问题似乎是一种病态,然而编码时对输入数据、接口的误用以及自己的可能问题保持警惕十分必要。

这一章介绍了许多工具,用来对代码进行约束、检查,以免出现问题而带来更大的问题。

 

按合约设计:Designed by Contract,俗称DBC。

合约:合约约定了进入一个函数/方法/模块的前条件,即进入模块必须满足的条件,常常指满足模块运行的情景或变量取值范围等等;后条件,即模块需要达成的结果,模块运行之后所能达到的状态;不变量,是对于模块的约束,在调用模块前后始终为真的一些描述。

合约可以是动态的,由“合约代理”在不同模块之间协商出一套合约,但我不知道相应技术。

这是一个很好的想法,其优点在于让代码早崩溃,此时问题更小更单纯。但是在常用的c、cpp中这个想法并没有那么可行。可以通过断言实现一部分功能。

不过通过良好的文档,可以对前条件、后条件、不变量进行描述,从而达到合约的想法,一定程度上获得其优点。

 

死程序不说谎:一个出现问题的程序可能会因为异常操作造成很大的破坏,所以运行出现问题时,崩溃好于破坏。要利用异常机制。

 

断言式编程:对于“不可能发生”的情况进行断言,以保证系统的健壮与安全,以免因错误数据或恶意攻击出问题。

然而断言时要避免加入执行代码及其他有副作用的代码,避免“海森堡bug”:不当调试改变了被调试系统的行为。

 

异常:检查每一个可能的错误,尤其是意料之中的错误是有必要的。

要将异常用于真正异常情况的处理而非模块逻辑的一部分。检查这一点的方式是去掉异常,观察模块能否正常运作。

 

怎样配平资源:谁申请的资源谁解除该资源,降低代码耦合度。

对于嵌套分配,以与资源分配相反的顺序解除资源分配以免资源的遗弃,在代码不同地方申请资源时以相同顺序申请以免死锁。

在异常处理机制中,一个模块可以通过捕捉异常再抛出从而退出和正常退出两条退出途径。为了遵守对资源利用有始有终并减少重复的原则,有以下思路:对于c++,使用类封装而非指针以保证析构函数会解除相应的资源;对于java,可以使用finally语句解除资源。在更多复杂的情况下,比如树状结构中一个资源指向更多资源,可以用类封装等方式减少出错率。

练习中指出了两个小技巧:c/c++中为了避免释放后的指针被错误地引用,修改不该修改的内存,可以将指针值改为null;java为惰性内存管理,所以使用完某个变量后可以将变量值改为null,从而解除引用,使变量更快被回收。



标签:读后感,异常,小工,解除,程序员,模块,合约,代码,资源
From: https://www.cnblogs.com/ysk0904/p/16845524.html

相关文章

  • 《程序员修炼之道 - 从小工到专家》读后感(三)
    第三章纯文本的威力:优点:可读性远大于二进制,且不依赖特定的应用解码,因此不会过时。为了增加纯文本可读性,应该使用能够理解的词语。另外纯文本可由任何应用读取,因此适合作......
  • 10月代码大全2读后感1
    对于代码大全2的第五章,第六章内容,从之前的大体转变为了更加细微的东西,第五章讲解了软件构架中的设计问题,点明了软件的首要使命是管理复杂度以简单性作为管理目标的设计方案......
  • 万字泣血解析割韭菜内情,程序员别老想着做副业 _
    前言最近有准备一篇干货,但想了想还是先放放,眼看年关将近,写点其他对大家有用的内容。今年见了不少人被割韭菜,下半年尤为严重,这种情形甚至在技术行业蔓延,令人深感大环境的......
  • 程序员修炼之道+从小工到专家阅读笔记02
    第五章弯曲,或折断解耦与得墨忒耳法则:好篱笆促成好邻居。函数的得墨忒耳法则视图使任何给定程序中的模块之间的耦合减至最少元程序设计:再多的天才也无法胜过对细节的专......
  • 程序员修炼之道:从小工到专家读后感
    这本书的适用范围可以从初学者到有经验的程序员再到项目经理,作为一本偏向理论与思想的书,书中不可避免有些假大空的地方,再加上作者写完本书的时间还在1999年,书中的很多方法......
  • 程序员修炼之道:从小工到专家读后感(x)
    在我们进行团队开发的时候需要注意不容忍破窗户-那些小小的无人修正的不完美的问题,质量是一个团队问题,如果一个人无论能力如何如果被派到不在乎质量的团队里,会发现自己......
  • 《程序员修炼之道:从小工到专家》读后感(第三篇)
    第14节纯文本的威力1、纯本文由可打印字符组成,人可以直接阅读和理解其形式。这里强调可打印含义是字符时经过编码的可阅读字符,而不是二进制。这在现在看来几乎是不用争辩......
  • 《程序员修炼之道:从小工到专家》读后感(第四篇)
    第21节按合约设计1、注重实效的程序员会不信任自己,所以他们针对自己的错误行为进行防卫性编码。2、按合约设计(DesignByContract,简写DBC)是BertrandMeyer为Eiffel语......
  • 《程序员修炼之道》读后感第二篇(10月)
    时间耦合时间是软件架构的一个常常被忽视的方面,吸引我们的时间只是进度表上的时间。作为软件自身的一种设计要素,时间有两个方面对我们很重要:并发和次序。我们在编程时......
  • Python程序员常犯的编码错误(三)
    1.引言本文是Python程序员常犯的编码错误的第三篇,在前两篇中我们重点介绍了常见的几种错误,本文继续介绍该话题,希望大家在日常生活中多多关注。闲话少说,我们直接开始吧!2.使......