Иногда при исправлении дефекта в существующей кодовой базе я могу (часто из лени) принимать решение об изменении метода из:
void
MyClass::foo(uint32_t aBar)
{
// Do something with aBar...
}
в
void
MyClass::foo(uint32_t aBar, bool aSomeCondition)
{
if (aSomeCondition)
{
// Do something with aBar...
}
}
Во время обзора кода коллега упомянул, что лучший подход будет заключаться в подклассе MyClass
для предоставления этой специализированной функциональности.
Однако я бы сказал, что до тех пор, пока aSomeCondition
не нарушает цель или сплоченность MyClass
, это приемлемый шаблон. Только в том случае, если код был внедрен с флагами, а операторы if
- наследование было бы лучшим вариантом, иначе мы потенциально могли бы войти в архитектуру территории астронавта.
Что здесь может быть здесь?
Примечание: Я только что увидел этот связанный ответ, который предполагает, что enum
может быть лучше
чем a bool
, но я думаю, что мой вопрос по-прежнему применяется в этом случае.