significa sentencia que programacion para operadores operador logicos ejemplos condicional aritmeticos c++ c comparison-operators

c++ - sentencia - Usar operadores de comparación fuera de los condicionales



que significa != en python (12)

¡Esto es absolutamente aceptable! De hecho, Joel mencionó esto en el último podcast de stackoverflow. Dijo que era lo único que tenía que mostrarle a casi todos los programadores que comienzan en Fog Creek.

Por ejemplo

int f(int a) { ... return a > 10; }

es considerado aceptable (no legal, quiero decir, es `` buen código ''''), o debería estar siempre en un condicional, como este

int f(int a) { ... if (a > 10) return 1; else return 0; }


Creo que es perfectamente aceptable, siempre que se asegure de hacer un esfuerzo extra para mantener la legibilidad. Me gustaría asegurarme de que el nombre del método no sea ambiguo y use buenos nombres de variables.

La segunda alternativa que proporcionaste, creo, es casi peor porque involucra una declaración de sucursal y múltiples declaraciones de devoluciones, y estas cosas aumentan la complejidad del método al mismo tiempo que reducen su legibilidad.


El primer caso es perfectamente bueno, mucho mejor que el segundo, en mi humilde opinión. Como cuestión de legibilidad, yo personalmente lo haría

return (a > 10);

pero eso es una queja menor, y no todos estarían de acuerdo.


El primero es mucho mejor para mí, ya que es más conciso. (Y evita múltiples devoluciones :)


No veo nada malo con eso. En todo caso, es más conciso y creo que la mayoría de los desarrolladores con experiencia moderada lo preferirían.


Prefiero escribir bool f(int); y la primera forma como bool es el tipo boolean en C ++. Si realmente necesito devolver un int , escribiría algo como

int f(int) { ... const int res = (i>42) ? 1 : 0; return res; }

Nunca había entendido por qué la gente escribe

if (expr == true) mybool = true ; else mybool = false;

en lugar de la llanura

mybool = expr;

El álgebra de Boole es una herramienta que cualquier desarrollador debería poder manejar instintivamente

Además, prefiero definir un nombre temporal ya que algunos depuradores no manejan muy bien los valores de retorno de función.


Sería aceptable, si su tipo de devolución fuera bool .


Típicamente haré lo primero sobre lo último.


return a > 10 ? 1 : 0;

... tiene más sentido porque estás devolviendo un int, no un bool.


Acabo de probar tres variantes diferentes con GCC:

int one(int x) { return (x > 42) ? 1 : 0; } int two(int x) { return x > 42; } int thr(int x) { if (x > 42) return 1; else return 0; }

Tan pronto como habilita alguna optimización, el código generado para todos es el mismo. Entonces debería usar la variante que es más fácil de leer.


Creo que parte de esto tiene que ver con el estilo y la cultura del idioma. El primer ejemplo que ha escrito es el que se esperaría de un programador C con experiencia. Preferirían estrangularse a sí mismos antes que poner en un bloque innecesario de declaraciones.

Creo que es perfectamente aceptable cuando el lenguaje lo permite y el uso es parte del paradigma de ese lenguaje


No solo es esa sintaxis 100% aceptable, también debería sentirse libre de usar expresiones booleanas fuera de las declaraciones if, es decir, int x = i && ( j || k ); (o devolviendo valores como ese).