A menudo me encuentro en una situación en la que tengo un método donde algo puede salir mal, pero una excepción no sería correcto porque no es excepcional.Algo puede salir mal, pero no es una excepción
Por ejemplo:
Estoy diseñando un juego de monopolio. La clase Banco tiene un método buyHouse y un campo que cuenta el número de casas que quedan (hay 32 casas en monopolio). Algo que podría salir mal es que un jugador compre una casa cuando quedan 0. Cómo debería manejar esto. Aquí hay 3 enfoques que puedo idear.
1. public void buyHouse(Player player, PropertyValue propertyValue)
{
if(houseCount < 0) throw new someException;
....
//Not really an exceptional situation
}
2. public boolean buyHouse(Player player, PropertyValue propertyValue)
{
if(houseCount < 0) return false;
....
//This I think is the most normal approach but changing something
//and returning if it was a success seems bad practice to me.
}
3. public boolean housesLeft()
{
if(houseCount > 0) return true;
return false;
//Introducing a new method. But now I expect the client to call this method
//first before calling buyHouse().
}
¿Qué harías?
En lugar de si (algo que es verdad) return true; falso retorno; Prefiero hacer retVal booleano final; retVal = houseCount> 0; return (retVal); – TofuBeer