Questo è un piccolo inconveniente, ma ogni volta che devo codificare qualcosa del genere, la ripetizione mi dà fastidio, ma non sono sicuro che nessuna delle soluzioni sia peggiore.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- C'è un nome per questo tipo di logica?
- Sono un po 'troppo DOC?
Sono aperto ai suggerimenti di codici malvagi, anche solo per motivi di curiosità ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. I dettagli grintosi di assicurarsi di avere i dati per DoSomething () sono a un livello di astrazione più basso, e quindi dovrebbero avere una funzione diversa. Questa funzione avrà un nome nel livello di astrazione più elevato e la sua implementazione sarà di basso livello. Le buone risposte di seguito affrontano questo problema.
DefaultAction
chiamate violano il principio DRY