Esta es una queja menor, pero cada vez que tengo que codificar algo como esto, la repetición me molesta, pero no estoy seguro de que ninguna de las soluciones sea peor.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- ¿Hay un nombre para este tipo de lógica?
- ¿Soy un poco demasiado TOC?
Estoy abierto a sugerencias de códigos malvados, aunque solo sea por curiosidad ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Los detalles esenciales de asegurarse de tener los datos para DoSomething () están en un nivel de abstracción más bajo y, por lo tanto, deberían estar en una función diferente. Esta función tendrá un nombre en el nivel superior de abstracción, y su implementación será de bajo nivel. Las buenas respuestas a continuación abordan este problema.
DefaultAction
llamadas violan el principio DRY