¿Existe alguna alternativa al código con hiper sangría?
A menudo me encuentro con un código que tiene que realizar muchas comprobaciones y termina sangrado al menos cinco o seis niveles antes de realmente hacer algo. Me pregunto qué alternativas existen.
A continuación, publiqué un ejemplo de lo que estoy hablando (que no es un código de producción real, solo algo que se me ocurrió).
public String myFunc(SomeClass input)
{
Object output = null;
if(input != null)
{
SomeClass2 obj2 = input.getSomeClass2();
if(obj2 != null)
{
SomeClass3 obj3 = obj2.getSomeClass3();
if(obj3 != null && !BAD_OBJECT.equals(obj3.getSomeProperty()))
{
SomeClass4 = obj3.getSomeClass4();
if(obj4 != null)
{
int myVal = obj4.getSomeValue();
if(BAD_VALUE != myVal)
{
String message = this.getMessage(myVal);
if(MIN_VALUE <= message.length() &&
message.length() <= MAX_VALUE)
{
//now actually do stuff!
message = result_of_stuff_actually_done;
}
}
}
}
}
}
return output;
}