首先,看起来我是在征求主观意见,但这不是我想要的。我想听听关于这个话题的一些有根据的论点。
为了深入了解现代流/序列化框架应该如何设计,我最近给自己买了一本书 标准 C + + IOStreams 和 Locales 作者: Angelika Langer 和 Klaus Kreft。我想,如果 IOstream 设计得不好,它一开始就不会进入 C++标准程式库。
在阅读了这本书的各个部分之后,我开始怀疑 IOStreams 是否能够从整体架构的角度与 STL 进行比较。阅读例如 这是对亚历山大 · 斯捷潘诺夫(STL 的“发明者”)的采访,了解一些进入 STL 的设计决策。
让我特别惊讶的是:
似乎还不知道谁负责 IOStreams 的整体设计(我想阅读一些关于这个的背景信息,有人知道好的资源吗?);
一旦你深入到 IOStreams 的表面之下,例如,如果你想用你自己的类来扩展 IOStreams,你就会得到一个有着相当隐晦和令人困惑的成员函数名的接口,例如 getloc
/imbue
,uflow
/underflow
,snextc
/sbumpc
/sgetc
/sgetn
,pbase
/pptr
/imbue
0(可能还有更糟糕的例子)。这使得理解整体设计和单个部件如何协作变得更加困难。即使我上面提到的书对 imbue
1也没有多大帮助(恕我直言)。
所以我的问题是:
如果你必须根据当今的软件工程标准来判断(如果实际上 是对这些标准有任何一致意见的话) ,C + + 的 IOStreams 还会被认为是设计良好的吗?(我不想从一些通常被认为过时的东西中提高我的软件设计技能。)