Estaba escribiendo una declaración if con nombres de propiedad bastante largos y encontré este problema.
Digamos que tenemos una declaración if como esta:
if(_someViewModelNameThatIsLong.AnotherPropertyINeedToCheck == someValue &&
!_someViewModelNameThatIsLong.ThisIsABooleanPropertyThatIsImportant)
{
//Do something
}
La segunda propiedad es de tipo booleano y no tiene sentido tener el stetement como
if(boleanValue == true)
¿Hay una mejor manera de enfatizar la negación que poner el !
frente? Para mí, parece que esto se puede supervisar fácilmente al leer el código y puede causar problemas de depuración.
readability
Ivan Crojach Karačić
fuente
fuente
_someViewModelNameThatIsLong
if( ! something)
vsif(!something)
... && model.Prop == false)
? Personalmente rara vez lo uso!
, es demasiado fácil pasarlo por alto.Respuestas:
Y luego, en la vista del objeto modelo
(suponiendo que someValue es una cadena y el objeto modelo no la conoce)
¡Esto no solo enfatiza el! operador, pero generalmente lo hace más legible. Ahora, en el método de llamada, puedo ver una condición, que debería estar bien nombrada para describir la condición en el contexto del objeto de llamada. Y en el objeto modelo, puedo ver lo que eso significa en el contexto del objeto modelo.
fuente
someValue
puede ser un parámetro delNeedsMeToDoSomething
método, según su situación.Póngalo solo si bloque antes de evaluar las condiciones menos importantes. No solo sería más fácil de leer sin el desorden de las otras condiciones, sino que también es la primera condición que leerá un programador. Combine esto con la idea ya mencionada por @scrwtp para asignar a una variable con un nombre significativo y obtendrá:
Si está programando en un lenguaje de compilación, la mayoría de las veces estos bloques anidados si se combinan al final de todos modos, siempre que no inserte código entre el if externo y el if interno, por lo que no debería afectar el rendimiento en estos casos.
fuente
Si está utilizando C / C ++, entonces el preprocesador podría proporcionarle legibilidad.
fuente
Solo extraeria
En un método que devuelve esto. Si nombra este método NotThisIsABooleanPropertyThatIsImportant, debería estar bien.
fuente