Jest to drobny problem, ale za każdym razem, gdy muszę kodować coś takiego, powtarzanie przeszkadza mi, ale nie jestem pewien, czy którekolwiek z rozwiązań nie jest gorsze.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- Czy istnieje nazwa dla tego rodzaju logiki?
- Czy jestem trochę za obsesyjna?
Jestem otwarty na sugestie złego kodu, choćby ze względu na ciekawość ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Szczegółowe szczegóły dotyczące upewnienia się, że masz dane do DoSomething (), są na niższym poziomie abstrakcji, a zatem powinny mieć inną funkcję. Ta funkcja będzie miała nazwę na wyższym poziomie abstrakcji, a jej implementacja będzie na niskim poziomie. Dobre odpowiedzi poniżej rozwiązują ten problem.
DefaultAction
połączenia naruszają zasadę OSUSZANIA