More Effective C++ 条款32 在未来时态下发展程序
1. 所谓"在未来时态下发展程序",指的是是程序需要具有良好的可扩展性和可维护性,它要求程序:功能齐全,接口易用,代码泛化,以下原则有助于实现这一目标:
1). 以C++本身表现各种规范而不是仅仅依赖于注释:如果某个class不打算作为基类,那么就应该以C++语法阻止派生(条款26);如果一个class要求所有对象实体在heap内产生,就以C++语法严格厉行这项约束(条款27),如果copying和assignment对某个class没有意义,就声明为private...
2). 如果某个类可能会被派生,就将析构函数声明为virtual,如果某个函数在派生类中可能会被重定义,就把它声明为virtual.
3). 为每一个class处理assignment和copy construction,如果这些函数不易完成,就把它们声明为private以防止编译器自行合成错误版本(条款E11).
4). 使class的操作符核函数拥有自然的语法和直观的语义,和内置类型行为保持一致.
5). 任何事情只要能做,就会有人做.如自我赋值,初始化前使用对象,给对象超出范围的值等.因此要使程序具有健壮性,有预防,侦测,甚至更正的能力.
6). 尽量写可移植代码.
7). 尽量降低代码之间的依赖性,将更改系统产生的影响降到最小:尽量采用封装性质(条款E20);尽量用匿名namespaces或文件内的static对象和static函数;尽量避免设计virtual base class,因为它的初始化需要由底层派生类完成;尽量避免使用RTTI而导致一层一层的if-else;尽量使用类声明胃不是类定义以降低文件之间的编译依赖性.
2. 当然,"现在式思维"也很重要:平台依赖,开发时间限制,性能考虑等因素都是重要的约束.但在条件允许的情况下应该使用"未来式思维"编程.