Pregunta

He visto esto, pero nunca escuché una explicación clara de por qué ... Esto es realmente para cualquier lenguaje, no solo C # o VB.NET o Perl o lo que sea.

Al comparar dos elementos, a veces el " cheque " el valor se coloca en el lado izquierdo en lugar del derecho. Lógicamente para mí, primero enumera su variable y luego el valor con el que está comparando. Pero he visto lo contrario, donde la "constante" aparece primero.

¿Qué ganancia (si hay alguna) hay para este método?

Entonces, en lugar de:

if (myValue > 0)

He visto:

if (0 < myValue)

o

if (Object.GimmeAnotherObject() != null)

se reemplaza con:

if (null != Object.GimmeAnotherObject())

¿Alguna idea sobre esto?

TIA! Kevin

¿Fue útil?

Solución

Algunos desarrolladores ponen la constante a la izquierda así

if(0 = myValue)

Esto se debe a que obtendrá un error del compilador, ya que no puede asignar un valor a 0. En su lugar, deberá cambiarlo a

if(0 == myValue)

Esto evita una gran cantidad de depuración dolorosa en el futuro, ya que escribir

if(myValue = 0)

es perfectamente legal, pero lo más probable es que quisieras decir

if(myValue == 0)

La primera opción no es lo que quieres. Cambiará sutilmente su programa y causará todo tipo de dolores de cabeza. ¡Espero que eso aclare!

Otros consejos

No creo que una regla simple como pero la constante primero o la última constante no sea una elección muy inteligente. Creo que el cheque debería expresarlo semántica. Por ejemplo, prefiero usar ambas versiones en una verificación de rango.

if ((low <= value) && (value <= high))
{
    DoStuff(value);
}

Pero estoy de acuerdo con los ejemplos que mencionó: sería la última constante y no veo ninguna razón obvia para hacerlo de otra manera.

if (object != null)
{
    DoStuff(object);
}

En C ++ ambos son válidos y compilan

if(x == 1)

y

if(x=1)

pero si lo escribes así

if(1==x)

y

if(1=x)

entonces la asignación a 1 se captura y el código no se compilará.

Se considera "más seguro" para poner la variable const en el lado izquierdo.

Una vez que tiene el hábito de colocar la variable const a la izquierda para la asignación, tiende a convertirse en su modo de operación predeterminado, es por eso que también aparece en las comprobaciones de igualdad

Para .Net, es irrelevante, ya que el compilador no le permitirá realizar una tarea en una condición como:

if(x=1)

porque (como todos decían) es una mala práctica (porque es fácil pasarlo por alto).

Una vez que no tiene que preocuparse por eso, es un poco más legible poner primero la variable y el valor en segundo lugar, pero esa es la única diferencia: ambos lados deben ser evaluados.

Es una práctica de codificación para atrapar errores tipográficos como '! =' escrito como '=' por ejemplo.

Si tiene una CONSTANTE a la izquierda, el compilador detectará todos los operadores de asignación, ya que no puede asignar a una constante.

Muchos lenguajes (específicamente C ) permiten mucha flexibilidad al escribir código. Si bien la constante de la izquierda le parece inusual, también puede programar asignaciones y condicionales juntos como,

if (var1 = (var2 & var3)) { /* do something */ }

Este código obtendrá el resultado booleano en var1 y también / * hará algo * / si el resultado es verdadero.

Una práctica de codificación relacionada es evitar escribir código donde las expresiones condicionales tienen asignaciones dentro de ellas; aunque el lenguaje de programación permite tales cosas. No se encuentra mucho con ese código ya que las asignaciones dentro de los condicionales son inusuales, por lo que el código típico no tiene tales cosas.

Hay un buen artículo sobre prácticas de codificación del lenguaje C en sitio IBM DeveloperWorks que probablemente sigue siendo relevante para las personas que escriben en ese idioma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top