OtD 1. Качество кода низкое
а) Повальное нарушение принятых соглашений и стандартов:
- использование имен, состоящих из большых букв, для объектов, не являющихся define'ами (на твой код очень тяжело смотреть - он "кричит")
- использование _ и __ в именах
- нет единства в именовании переменных (snStr, szStr, dwNomBita, Razm)
- смесь французского с нижегородским (если уж ты взялся предоставлять двуязычный интерфейс, то будь добр снабжать функции с английскими названиями английскими же именами параметров и английскими комментариями)
б) Непереносимость
- __fastcall, __stdcall, __declspec и тому подобные нестандартные расширения
- Lib, а также Dll, эспортирующая С++ объекты, не переносимы даже в рамках Win32
- ассемблерные вставки
- скорее всего код не работает на big endian платформах
2. Плохая реализация
- Если тебя не устраивают возможности стандартных средств (vector<bool>, bitset, boost::dynamic_bitset), то надо было наследоваться от одного из них, добавляя новые функции. Иначе твой класс нельзя совместно использовать с существующим кодом.
- Аналогичное замечание про самопальный exception
- Где operator[], где запись/чтение в/из потоков?
3. Бессмысленная оптимизация
Не раз утверждалось, что этот класс во столько-то раз быстрее, и занимает мешьше памяти, чем стандартные альтернативы. Даже если это так, то приведи примеры
реальных задач, для которых работа с битовыми полями - узкое место по скорости (памяти), а так же оцени долю таких задач от общего числа. Я вот не могу себе представить программу, в которой нужно производить миллиарды операций сдвига и выделять миллионы битов.
Напоминаю, для тех кто в танке
, первое правило оптимизации: не оптимизируй [Sutter]
Вывод:
Цитата: Оценка 2 - когда код имеет очертания, но бесполезен и в большей степени нужен для образовательных целей.