Здравствуйте, Alexey Shirshov, Вы писали:
ГВ>> Ромбовидное невиртуальное наследование;
AS>Это как?
Вот так:
class B : public A {};
class C : public A {};
class D : public B, public C {};
ГВ>> Очень большие объекты all-in-one (скорее всего их стоило бы разбить на несколько более мелких);
AS>С большим интерфейсом имеется в виду, надеюсь.
Угу, именно с ним.
ГВ>> Иерархии с глубиной наследования где-то больше 3-5 уровней;
AS>Не согласен. Глубина должна быть такой, какой должна быть. Хотя, конечно, больше пяти уровней — это только в дотнете или дельфах бывает. 
Так сложнее разобраться в том, что на самом деле может делать тот или иной класс.
ГВ>> Отсутствие const-методов (относительно ненадёжный критерий, конечно, но я бы "напрягся");
AS>А вот в дотнете их вообще нет.
Бяда
ГВ>> Обилие методов типа get_Value/set_Value;
AS>Не согласен. Я считаю, что свойства, в очень многих случаях они просто необходимы.
Я имел ввиду не свойства, а примитивные аксессоры. Они порождают те же проблемы, что и открытые поля классов.
AS>Рекомендации ниже относятся, скорее к рефакторингу, чем к проектированию.
Ну, вопрос же в том и состоял — расширять и сопровождать.
ГВ>>
ГВ>> Динамическое приведение типов сверху-вниз по иерархии наследования или просто обилие rtti;
AS>Зачем динамически сверху вниз приводить?
Ты у меня спрашиваешь?

Не знаю.

Наверное затем, что приводить снизу вверх не нужно, это компиляторы делают.
ГВ>> Злоупотребление void*;
AS>Это только для С++ справедливо. И вообще, другие языки значительно меньше провоцируют разработчика к подобным ошибкам.
Или — злоупотребление object.
ГВ>>Ещё я посоветовал бы тебе поискать в инете материалы по ключевым словам "Object-oriented metrics".
AS>Или refactoring.
И это — тоже полезно.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!