第14条--宁要编译时和连接时错误,也不要运行时错误
能在编译时做的事情,就不要推迟到运行时。
在静态类型语言C++的环境中,程序员肯定应该尽可能地使用能带来优势的类型系统。
同时,对于与数据和控制有关的检查来说,使用运行时检查也是明智的选择。
示例:
1 编译时布尔条件 如果测试的是编译时布尔条件,比如sizeof(int)>=8, 那么可以使用断言取代运行时测试。
2 编译时多态 定义泛型函数或者类型时,考虑用编译时多态(模板)代替运行时多态(虚拟函数),。前者产生的代码能够更好的进行静态检查、
3 枚举 在需要表示符号常量或受限整数值时考虑定义enum。
4 向下强制(downcast) 如果经常使用dymanic_cast执行向下转化,则可能说明基类
提供的功能太少了。此时可以考虑重新设计接口,使程序能够用基类表示计算。
例外情况:
有些情况下,无法在编译时检查, 必须进行运行时检查。对于这种情况,应该使用断言来检查内部变成错误,对于其他运行时错误比如与数据相关的错误,则要遵循“错误处理与异常”部分的其他建议进行处理。
阅读(795) | 评论(0) | 转发(0) |