程序员修炼之道读后感(四)

本文探讨了防御性编程的重要性,介绍了按合约设计(DBC)的概念及其应用,包括前条件、后条件、类不变项等内容,并讨论了断言式编程、异常使用及资源管理的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 世界上没有完美的代码,也没有完美的程序员。只有防卫性地编码和注重实效地程序员。
 
按合约设计(DBC)
Design with Contracts.通过合约进行设计
用合约的方法帮助软件模块进行交互;
程序做它生命要做的事情,用文档记载这样的声明,并进行校验;
例程对世界状态的期望:
前条件(precondition):调用例程必须的条件;
后条件(postcondition):例程完成后世界的状态;
类不变项(class invariant):类确保从调用者角度看,条件总为真;
Liskov替换原则:子类必须要能通过基类的接口,而使用者无须知道其区别;
实现DBC:断言与语言支持(Java:iContract)
不变项的用法:1.循环不变项;2.语义不变项
 
死程序不说谎
Crash Early.早崩溃
有时候宁愿要程序崩溃,也千万不要让它把坏数据写入;
检查每一个可能的错误——特别是意料之外的错误——是一种良好的实践;
 
断言式编程
If It Can’t Happen,Use Assertions to Ensure That Won’t.
如果它不可能发生,用断言确保它不会发生
不能用断言代替真正的错误处理
Java断言类实现
import java.lang.System;
import java.lang.Thread;
public class Assert{
       public static void TEST(Boolean conition){
              if(!conition){
                     System.out.println(“Assertion Failed”);
                     Thread.dumpStack();
                     System.exit(1);
              }
       }
}
 
如何使用异常
Use Exceptions for Exceptional Problems.将异常用于异常问题
对于出错或可能出错的地方尽量使用异常抛出,if来if去多麻烦。
 
怎么配平资源
Finish What You Start.要有始有终
记得释放你的资源,否则世界会因为你占有太多资源不堪重负,最终崩溃;
嵌套分配
1. 以与资源分配的次序相反的次序解除资源的分配;
2. 在代码的不同地方分配同一组资源时,总是以相同的次序分配它们;
无论是谁分配的资源,它都应该负责解除该资源的分配;
在Java开发中使用完某个对象都,将其设为NULL,这可以使垃圾回收器将它自动回收。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值