Я переписываю библиотеку общего назначения, которая была написана мной до того, как я выучил 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()
полностью? Должен ли я позволить пользователю вручную установить максимальный размер контейнера, а если нет, как я могу проверить переполнение?
Я знаю, что не может быть универсального подхода, поэтому я хотел бы услышать политики, используемые другими программистами и поставщиками платформ. Библиотека, над которой я работаю, является кроссплатформенной и предназначена для общего пользования и будет использоваться десятилетиями. Спасибо.