【发布时间】:2012-03-25 02:38:04
【问题描述】:
我从事 C++ 和 Java 编程已经有一段时间了,对常见的 C++ 架构有一些疑问。
当我使用 Java 编程时,我尝试模仿标准库,即使用诸如 Iterable 和 Serializable 之类的接口,并具有类似的命名约定和功能。然而,对于 C++,我在尝试模仿 STL 约定(迭代器除外)时犹豫不决。
我将其归结为以下问题(以下是要实施的常见约定):
- 分配器
- 接口(只有纯虚方法的类)
- 模板而不是抽象基类
- 限制异常抛出...
- ...或者让一个类选择性地抛出异常(例如在标准流中)
- 将 typedef 用于或多或少的明显类型(reference_type、pointer_type、value_type、...)
还是说C++的标准根本不值得模仿?
感谢您的意见/回答!
【问题讨论】:
-
嗯。这很难以有意义的方式回答。你真的在问六个不同的大问题; “为什么 STL 使用
”,对于 中的 x。这太多了。我投票结束这个问题,因为它的范围过于广泛。尝试询问其中之一。例如“为什么 STL 使用分配器?我从来没有使用过它们,我想知道它们为什么在那里。我应该编写自己的类来由分配器参数化吗?”。 -
好吧,如果我把它们分成更多的问题,它们都会是这样的:为自定义容器使用分配器是常见的约定吗?使用接口是通用约定吗?依此类推……对于我自己的项目,我更喜欢遵循良好的实践,然后从我的项目到其他人的项目的跳跃较小。所以我真正想知道的是,“遵循 STL 风格的编码是一种好习惯吗?”。
标签: c++ oop architecture stl