これはささいなことではありませんが、このようなコードをコーディングする必要があるたびに、繰り返しが気になりますが、どのソリューションも悪くないかどうかはわかりません。
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原則に違反する