Здравствуйте, Геннадий Васильев, Вы писали:
[]
ГВ>Вообще-то, знаешь, структура хорошей объектной библиотеки просто красиво выглядит.
ИМХО, такая оценка должна быть не самым последним критерием для того, кто собирается эту библиотеку модифицировать.
Все зависит от вкусов. Хотя они редко плохими у опытных архитекторов бывают.
ГВ>Если смотреть по диаграмме классов, то стоит обратить внимание на:
ГВ>
ГВ> Ромбовидное невиртуальное наследование;
Это как?
ГВ> Открытые поля класов (трудно проконтролировать способы изменения состояния объекта);
ГВ> Очень большие объекты all-in-one (скорее всего их стоило бы разбить на несколько более мелких);
С большим интерфейсом имеется в виду, надеюсь.
ГВ> Иерархии с глубиной наследования где-то больше 3-5 уровней;
Не согласен. Глубина должна быть такой, какой должна быть. Хотя, конечно, больше пяти уровней — это только в дотнете или дельфах бывает.
ГВ> Отсутствие private/protected-секций (говорит о том, что классы, скорее всего небрежно проектировали);
ГВ> Отсутствие const-методов (относительно ненадёжный критерий, конечно, но я бы "напрягся");
А вот в дотнете их вообще нет.
ГВ> Обилие методов типа get_Value/set_Value;
Не согласен. Я считаю, что свойства, в очень многих случаях они просто необходимы.
ГВ>
ГВ>И ещё стоит "окинуть взглядом" исходные коды методов, потенциальные проблемы могут быть спрятаны там:
Другими словами: "Кроме этого, ознакомтесь с исходным кодом библиотеки." А что если она занимает 5 метров?
Рекомендации ниже относятся, скорее к рефакторингу, чем к проектированию.
ГВ>
ГВ> Динамическое приведение типов сверху-вниз по иерархии наследования или просто обилие rtti;
Зачем динамически сверху вниз приводить?
ГВ> Злоупотребление void*;
Это только для С++ справедливо. И вообще, другие языки значительно меньше провоцируют разработчика к подобным ошибкам.
ГВ> Очень большие методы (увидишь — поймёшь);
Есть такое, однако это уже чистейшей воды рефакторинг.
ГВ>
ГВ>Ещё я посоветовал бы тебе поискать в инете материалы по ключевым словам "Object-oriented metrics".
Или refactoring.
ГВ>Ну вот так или примерно так.