十月第二份阅读笔记

程序员修炼之道从小工到专家第四章 注重实效的偏执

你不可能写出完美的软件

按合约设计:通过合约进行设计。

对在开始之前接受的东西要严格,而允诺返回的东西要尽可能少。

实现DBC:

没有合约,你就是靠巧合编程了。自动检查。

文档记载,注释。

断言:使用断言,对此进行部分的模拟,提前崩溃,可以知道问题出在哪里。

不变项的其他用法:循环不变项,边界问题,语义不变项, 固定的需求、不可违法的法则与那些仅仅是政策的东西不同。

动态合约与代理:合约不是固定的,可以通过组件和代理来实现某个目标。

死程序不说谎:如果发生了不可能的事情,就让你的程序崩溃/终止。死程序可以坏程序要好。

断言式编程:如果它不可能发生,用断言确保它不会发生。不要自己欺骗自己。

何时使用异常:如果不停的if,else来避开异常。只要在开头结尾处写try catch就好了。可以将错误收集并处理,而且控制流也会清晰很多。

怎样配平资源

要有始有终,不要被全局变量把程序耦合在一起。放到参数里传递。局部变量。

嵌套的分配:

     与分配次序相反,进行释放。

     在代码不同位置进行申请时,总是保持同一个顺序,防止死锁。

对象与异常:

     构造和析构,使得把资源封装在类中很方便。

配平与异常:在Java,使用finally

当你无法配平资源时:追踪资源,如何释放。More Effective C++会讲这个。

检查配平:长期运行的、对请求进行服务的程序,很可能会回到主循环的顶部的某个地方等待下一个请求。

posted @ 2022-10-27 11:41  小趴菜且能喝66  阅读(17)  评论(0编辑  收藏  举报