Можно ли проверить, что условие верно для каждой строки блока операторов, не имея if (condition)
перед каждой строкой?Проверьте состояние перед каждой строкой кода без нескольких операторов IF?
Например:
if (condition)
{
DoSomething();
DoSomethingElse();
DoAnotherThing();
}
В какой-то момент другой фоновый процесс может быть установлен condition
ложь, прежде чем DoSomethingElse()
была выполнена. По существу я искать эффективный и простой способ сказать:
if (condition) DoSomething();
if (condition) DoSomethingElse();
if (condition) DoAnotherThing();
В действительности это длинный блок кода, выполняется один раз, что я хочу отказаться, если в любой момент конкретный флаг изменен.
Каков наилучший способ подтянуть этот тип кода.
Полиморфизм. Создайте классы, представляющие сущности DoSomething(), DoSomethingElse() и DoAnotherThing(). Затем вызовите myclass1.doThing(); myclass2.doThing() и myclass3.doThing(). Внутри этих методов есть перенаправление на один метод, который проверяет условие, затем запускает соответствующую функцию. http://sourcemaking.com/refactoring/replace-conditional-with-polymorphism –
Если, Else IF, Else If, Else ...? – JsonStatham