关于 C++软件设计的建议

简介

RT

参考资料

C++语言的设计与演化

内容

在回答这个问题时,程序员经常把注意力集中在语言特征上:我要不要使用 inline 函数?虚函数?多重继承?单根层次结构?抽象类?重载函数?这种关注根本就是错的。
这些语言特征的存在只是为了支持更具本质性的折中:设计是否应该
• 强调运行时的效率?
• 使修改之后的重新编译达到最小化?
• 最大化跨平台的可移植性?
• 允许用户扩展基本的库?
• 允许在没有源代码的情况下使用?
• 与现存的记法和风格混合在一起?
• 使之可以从不是用 C++写的代码中调用?
• 对新手也很容易使用?
给出了对于这些问题的回答之后,自然而然地也就有了对于语言层问题的答案。

库的设计思想

名称空间解决了不同的库中使用同样名称的基本问题;异常处理为建立一种处理错误的公共模型提供了基础。
模板是为定义独立于具体类型的容器类和算法而提供的一种机制,其中的具体类型可以由用户或者其他的库提供。
构造函数和析构函数为对象的初始化和最后清理提供了一种公共模型。抽象类提供了一种机制,借助于它可以独立地定义接口,与实际被接口的类无关。运行时的类型信息是为寻回类型信息而提供的一种机制,因为当对象被传递给一个库然后再传递回来的时候,可能只携带着不够特殊的(基类的)类型信息。当然这些不过是有关语言功能的一方面用途,但如果把他们看成针对由独立开发的库触发去构造程序的支持功能,问题就更清楚了。

最好的方式是库的供应商认识到他们并不拥有整个世界,将来也不会如此,而给予这种认识设计出的库,实际上最符合他们自身的利益。

原文地址:https://www.cnblogs.com/eat-too-much/p/14322907.html