在未来时态下开发C++程序

在未来时态下开发C++程序,第1张

在未来时态下开发C++程序,第2张

好的软件能够适应变化。它提供新功能,适应新平台,满足新要求并处理新输入。

函数库会增加新的函数,会出现新的重载,所以要注意那些模糊的函数调用的结果;新的类将加入继承层次结构,当前的派生类将是未来的基类,它为此做好了准备;新的应用软件会被编译,函数会在新的运行环境中被调用,要编写它们在新的平台上正确运行;程序的维护者通常不是最初编写它们的人,所以它们应该被设计成容易被其他人理解、维护和扩展。

一种方法是使用C++语言本身来表达设计约束,而不是使用注释或文档。例如,如果一个类被设计成不被继承,不要只是在它的头文件中添加一个注释,使用C++来防止继承。

如果一个类需要在堆中创建它的所有实例,不要只对用户这样说,使用前面介绍的方法来强制这样做。

如果复制构造和赋值对一个类没有意义,通过声明它们为私有来阻止这些操作。

你要判断一个函数的意义,如果被派生类重定义,是否有意义。如果它有意义,就声明它是虚的,即使没有人立即重新定义它。如果不是,就声明是真的,以后不要为了某个人的方便而改;确保更改对整个类的运行环境和类所代表的抽象有意义。

处理每个类的赋值和复制构造函数,即使“从来没有人这样做过”。他们现在不做,不代表以后不会做。如果这些函数很难实现,就声明它们是私有的。这样,没有人会因为误调编译器提供的默认版本而出错(这种情况经常发生在默认赋值和复制构造函数中)。

基于最小惊奇原则:尽量提供这样的类,它们的操作和函数有自然的语法和直观的语义。与内置数据类型的行为保持一致:如果有疑问,请以int为例。

承认:只要能做,就会有人去做(WQ:墨菲定律)。他们会抛出异常;会自己给自己赋值;在赋值初始值之前使用对象;在不使用对象的情况下为其赋值;将被赋予过大、过小或空值。一般来说,只要能编通,就会有人这么做。所以,要让自己的类容易被正确使用,不易被误用。承认用户可能会犯错误,所以设计你的类来防止、检测或纠正错误。

争取可移植代码。编写可移植代码并不比非可移植代码难多少,只有在性能极其重要的情况下才宜采用非可移植结构。甚至为特定硬件设计的程序也经常被移植,因为这些平台的性能会在几年内提高一个数量级。可移植代码使你更容易改变平台,扩大你的用户群,并以支持开放平台而自豪。当你赌错了操作系统时,它也更容易补救。正确设计你的代码。当需要改变时,影响是局部的。尽可能包装;将实现细节声明为私有。尽可能在命名的空房间和文件中使用匿名静态对象或函数。避免虚基类的设计,因为这个类需要每个派生类直接初始化——即使是那些间接派生类。避免RTTI设计,它需要如果...然后...else瀑布结构。每次,类的继承级别都会改变,并且每组if...然后...else语句需要更新。如果你忘记了一个,你不会从编译器那里得到任何警告。

未来时态的考虑只是增加了一些额外的约束:

提供完整的类,即使有些部分还没有使用。如果有新的要求,就不用回去改了。

设计您的界面,以方便常见的操作,并防止常见的错误。让类容易正确使用,不容易错误使用。例如,块复制构造和赋值操作,如果它们对这个类没有意义的话。防止部分分配。

如果你不能无限制地泛化你的代码,那就泛化它。比如使用写树的遍历算法,考虑让它足够通用,可以处理任何有向无环图。

未来的考虑增加了代码的可重用性、可维护性和健壮性,并且在环境变化时很容易修改。它必须与进行时态的限制相平衡。太多的程序员只关注现在的需求,但是这样做牺牲了他们软件的长期生存能力。与众不同,离经叛道,用将来时开发程序。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 在未来时态下开发C++程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情