Это небольшая проблема, но каждый раз, когда мне приходится кодировать что-то вроде этого, повторение беспокоит меня, но я не уверен, что какое-либо из решений не хуже.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- Есть ли название для такой логики?
- Я тоже чересчур ОКР?
Я открыт для злых предложений по коду, хотя бы ради любопытства ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Мельчайшие подробности о том, что у вас есть данные для DoSomething (), находятся на более низком уровне абстракции и, следовательно, должны быть в другой функции. Эта функция будет иметь имя на более высоком уровне абстракции, а ее реализация будет на низком уровне. Хорошие ответы ниже решают эту проблему.
DefaultAction
звонка нарушают принцип СУХОГО