【发布时间】:2011-10-04 17:51:57
【问题描述】:
我正在重写一个我在学习 STL 之前编写的通用库。它一直使用 C 风格的数组。很多地方都有这样的代码:
unsigned short maxbuffersize; // Maximum possible size of the buffer. Can be set by user.
unsigned short buffersize; // Current size of the buffer.
T *buffer; // The buffer itself.
我做的第一件事就是像这样更改代码:
unsigned short maxbuffersize;
unsigned short buffersize;
std::vector<T> buffer;
然后:
typedef unsigned short BufferSize;
BufferSize maxbuffersize;
BufferSize buffersize;
std::vector<T> buffer;
然后我觉得我做了一件非常糟糕的事情,应该重新考虑我的编码风格。起初,BufferSize 似乎是一个非常糟糕的类型名称,但随后各种奇怪的问题开始出现。如何命名尺寸类型?我应该使用自己的类型还是从std::vector<T>::size_type 继承?我应该缓存容器的大小还是一直使用size()?我是否应该允许用户手动设置容器的最大大小,如果不允许,如何检查溢出?
我知道不可能有千篇一律的方法,因此我想听听其他编码人员和框架供应商使用的策略。我正在开发的库是跨平台的通用库,旨在发布到公共领域并使用数十年。谢谢。
【问题讨论】:
-
既然你要把它发布到公共领域,我认为你应该给你的程序一个小插件。
-
它是Source engine console 的克隆,去掉了一些限制(例如只有一个实例)。
-
王牌,如果你在互联网上建立了一个仓库(比如github)——发个链接
-
有一个旧版本here。从那以后我重写了主要部分,并计划在它足够完善时发布它。