A menudo he visto que se usan tales comentarios:
function foo() {
...
} // foo
while (...) {
...
} // while
if (...) {
...
} // if
y a veces hasta
if (condition) {
...
} // if (condition)
Nunca he entendido esta práctica y, por lo tanto, nunca la apliqué. Si su código es tan largo que necesita saber cuál es este final, }
entonces tal vez debería considerar dividirlo en funciones separadas. Además, la mayoría de las herramientas de desarrollo pueden saltar al soporte correspondiente. Y finalmente, lo último es, para mí, una violación clara del principio DRY; si cambia la condición, también deberá recordar cambiar el comentario (o de lo contrario podría ser complicado para el mantenedor, o incluso para usted).
Entonces, ¿por qué la gente usa esto? ¿Deberíamos usarlo o es una mala práctica?
source-code
comments
gablin
fuente
fuente
if(condition): ... else: ... endif;
if ... then ... end if;
while ... loop ... end loop;
procedure Foo is ... end Foo;
. Creo que ayuda a la legibilidad (y el compilador lo verifica, cuyos comentarios no lo son).Respuestas:
Diría que si su código es tan largo que no puede seguir fácilmente sus llaves, su código necesita una refactorización, para la mayoría de los idiomas.
Sin embargo, en los lenguajes de plantillas (como PHP) podría ser válido, ya que podría tener un gran bloque de HTML que separa el principio y el final de la condición o la estructura del bucle.
fuente
while():
endwhile;
yforeach():
endforeach;
etc.Es un olor a código y generalmente una resaca del estilo de código antiguo. Antes, la refactorización de IDEs decentes era más difícil y no tan común como lo es ahora, por lo tanto, los métodos eran más largos y estos comentarios estaban allí para ayudarlos a navegar mejor.
fuente
Esta es una práctica horrible hecha obsoleta por muchos factores.
Noto que muchos programadores de Java tienen esta mentalidad, y hace que el código de Java se vea realmente sucio y desvía la atención del código hacia los comentarios.
Muy recomendable en contra de usar esto.
fuente
El código se lee 10 veces más de lo que está escrito.
Si hace que sea más fácil de leer, hazlo.
También le sugiero a cualquiera que haga esto que busque otras formas de facilitar la lectura. Las técnicas de refactorización, corchetes en diferentes líneas, etc. que otras personas han mencionado son buenas. También es bueno dividir las cosas en diferentes funciones, métodos o clases para que el código se auto-comente. También hay formas de eliminar la mayoría de los "si" y poner bucles "for" en lugares obvios, eliminando así la necesidad de todo esto.
Pero, a veces las personas están aprendiendo. Si esto es algo que están haciendo, realmente está haciendo que el código sea más legible, aliéntelo y luego aliente también algunas otras prácticas. Las personas que están aprendiendo merecen y se beneficiarán del estímulo, independientemente de cómo empiecen. Decir "Esto es malo" no es tan útil como decir "Esta otra cosa es mejor".
fuente
Tengo una base de código grande (C ++) llena de este tipo de cosas:
Para algo tan pequeño, diría que esto va más allá del "olfato del código" al "hedor del código". Especialmente en un IDE donde puedo hacer coincidir la llave de cierre con una pulsación de tecla para encontrar la llave de apertura. Dado un método más largo, aún tomaré la combinación de llaves sobre el comentario del terminal. Tales comentarios me distraen, y tiendo a pensar en ellos como ruido.
fuente
En C ++ hay dos remanentes en los que esto sigue siendo útil y el consejo de "dividir el código" no es necesario:
Para espacios de nombres. Un espacio de nombres puede abarcar un archivo completo, y ese último corchete a veces puede desanimar a las personas, por lo que agregar un comentario para indicar que el corchete es el cierre de un espacio de nombres es útil. Para el estilo de codificación particular en mi empresa, esto es importante porque no sangramos espacios de nombres, ya que se decidió que dicha sangría solo desperdiciaría espacio en un archivo.
Para pares #ifdef / #endif. A veces hay mucho código allí para la compilación condicional, puede ser desagradable con la anidación, y el editor que usamos a menudo "con ayuda" elimina la sangría, por lo que los comentarios son útiles durante una descripción general rápida.
fuente
Para mí, el código tiene que ser confuso para agregar un comentario como el que especificó.
Si solo dice // Declaración IF. Entonces tienes que preguntarte por qué está allí en primer lugar.
fuente
//endif
La alternativa a ver qué está cerrando su aparato ortopédico es tener el que se abre en la misma columna que el que está cerrado. Me parece mucho más claro y más legible.
El comentario es útil cuando normalmente sería difícil de rastrear porque la apertura ocurrió hace mucho tiempo. Esto normalmente debería ocurrir solo para un espacio de nombres (particularmente el anónimo en C ++, usado para detalles de implementación en la unidad de compilación). En la mayoría de los otros casos, debería ser obvio lo que está cerrando.
fuente
Esto es en gran parte un remanente de los viejos tiempos de trabajar en ventanas de terminal de 80x24 caracteres, especialmente si estaba usando un editor de ventanas como EVE. Incluso ahora, hago la mayor parte de mi trabajo en una sesión de terminal usando vim, y puedo dividir la sesión en tres o cuatro subventanas, por lo que solo puedo ver algunas líneas a la vez.
Dicho esto, nunca me entusiasmó la convención, a pesar de que me hubiera salvado el tocino en más de una ocasión. Solo lo veo como ruido. Si sus bucles o condicionales se están haciendo tan grandes, sí, es posible que desee considerar la refactorización.
fuente
Básicamente, da todas las razones válidas para no usar esto Todo programador decente debería aplicarlos. Entonces, ¿por qué la gente lo usa? Porque lo están haciendo mal y no lo saben mejor.
fuente