Це незначне хитрощі, але щоразу, коли мені доводиться кодувати щось подібне, повторення мене турбує, але я не впевнений, що будь-яке рішення не гірше.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- Чи є така назва логіки?
- Я занадто OCD?
Я відкритий для злих пропозицій щодо коду, хоча б заради цікавості ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Деталі нітроподібного зерна, що забезпечують наявність даних для DoSomething (), знаходяться на нижчому рівні абстрагування, і тому повинні виконувати інші функції. Ця функція матиме назву на вищому рівні абстракції, а її реалізація буде низькорівневою. Хороші відповіді нижче стосуються цього питання.
DefaultAction
дзвінки порушують принцип DRY