10月读程序员小工到专家读后感第二篇

我阅读了程序员修炼之道的第四章,注重时效的偏执,该篇章主要分为5部分。首先在合约时要注意根据合约来编写程序,在这里有一些前提条件: 为了调用例程,必须为真的条件;例程的需求。在其前条件被违反时,例程决不应该被调用。传递好数据是调用者的责任。其次,对在开始之前接受的东西要严格,而允诺返回的东西要尽可能少。如果你的合约表明你将接受任何东西,并允诺返回整个世界,那你有大量代码要写了。最后就是谁负责检查前条件?对参数进行任何显式的检查,就必须由调用者来完成

其次就是程序是不会说谎的。在这之中,尽早检测问题的好处之一是你可以更早崩溃当你的代码发现,某件被认为不可能发生的事情已经发生时,你的程序就不再有存活能力。从此时开始,它所做的任何事情都会变得可疑,所以要尽快终止它。死程序带来的危害通常比有疾患的程序要小得多

第三部分是断言式编程。这里我收获了三点。首先是如果它不可能发生,用断言确保它不会发生,其次是断言可能会在编译时被关闭——决不要把必须执行的代码放在assert,最后是不要用断言代替真正的错误处理。断言检查的是决不应该发生的事情

最后一部分是怎样配平资源。资源有始有终,提示我们,分配资源的例程也应该释放它。比如文件操作,在同一个例程(函数)完成打开、关闭操作。我对于嵌套资源分配提出了以下建议:1 以资源分配的顺序相反的顺序解除资源的分配。这样,如果一个资源含有对另一个资源的引用,你就不会造成资源被遗弃 2. 在代码不同地方分配同一组资源时,总是以相同的次序分配它们。这样降低死锁的可能性(如果进程A申请了resource1,并正要申请resoucre2,而进程B申请了resource2,并试图获得resource1,这两个进程就会永远等待下去)

以上是我读程序员修炼之道的收获

posted @   樱花开到我身边  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示