Durante el transcurso de la programación, terminarás con algunos comentarios que explican el código y algunos comentarios que eliminan el código:
// A concise description
const a = Boolean(obj);
//b = false;
¿Existe un buen método para analizar rápidamente cuál es cuál?
He jugado con el uso de 3 /
y /** */
para comentarios descriptivos.
También he usado un complemento VSCode para resaltar //TODO:
y//FIXME:
///
y/** ... */
los comentarios también son utilizados por algunos generadores de documentación, como Doxygen o jsdoc. Si los usa o herramientas similares, es posible que no pueda usar ese tipo de comentarios para comentarios descriptivos que no pretenden ser parte de la documentación.Respuestas:
Hay una solución muy simple para esto: eliminar el código comentado.
Realmente, solo hay dos buenas razones para comentar el código: para probar algo / hacer una solución, o para guardar el código que podría usar más adelante. Si está probando o arreglando algo, elimine el código comentado tan pronto como haya terminado con la prueba o la corrección. Si está guardando el código que podría usar más tarde, conviértalo en un código de primera clase y póngalo en algún lugar, como una biblioteca, donde se pueda utilizar.
fuente
Agregando a la excelente respuesta de @ RobertHarvey, creo que solo hay una razón legítima que he encontrado para guardar el código comentado en el control de origen, incluso temporalmente: en caso de código de reemplazo no obvio que no debería o no puede usarse en este momento por alguna razón . Incluso entonces, la mayor parte del comentario debería ser la explicación, no el código de reemplazo. Esto podría ser un error o una característica del lenguaje que aún no se considera estable. Podría verse más o menos así:
En este caso, el trabajo ya se ha realizado, pero aún no puede aprovecharlo, por lo que eliminarlo significa que alguien tendría que redescubrirlo más tarde. Lo mismo ocurre con soluciones subóptimas que pueden parecer superiores a primera vista o compensaciones conscientes contra soluciones similares .
Precaución: no ensucies tu código con soluciones alternativas. Cada tarea se puede hacer de infinitas maneras diferentes, y no es rentable explorar este espacio durante mucho tiempo para cada cambio. Las revisiones de código pueden ser un buen lugar para descubrir esos comentarios faltantes, cuando su colega sugiere una mejora que ya ha descubierto que no es óptima.
fuente
frobnicate(bar)
, para que nadie venga e intente "arreglar" tu código "poco elegante". Entonces les demuestras que sabes que en un mundo perfecto, lafrobnicate
función sería el camino a seguir, pero sabes por experiencia dolorosa que no funciona correctamente. Puede no haber ninguna expectativa de que el tercero lo considere un error, y mucho menos vale la pena arreglarlo; aún necesita dejar un comentario a los futuros programadores (incluido usted mismo) sobre por qué no adoptó el enfoque obvio.Hmm, leí esta pregunta un poco diferente de Robert, quien afirma correctamente que el código comentado debería eliminarse.
Sin embargo, si está buscando una convención para marcar el código para su posterior eliminación, un viejo favorito mío es:
//b = false; //TODO: remove
Algunos
//TODO:
comentarios de bandera del IDE o se les puede enseñar. Si no, generalmente es una cadena de búsqueda. Es mejor seguir cualquier convención que su tienda haya establecido porque esto se puede hacer de varias maneras. Cada código base debe hacer esto de una manera. Lo mantiene investigable.Sin esa marca, la forma automática de hacerlo es con el compilador. Si quitar el comentario produce un código que se compila, debe haber sido un código comentado. Escribir un complemento IDE que compruebe que no sería difícil. Pero dejará atrás el código comentado con errores.
Es por eso que es mejor marcar simplemente el código comentado como código en el momento en que lo comenta. Esto le permite trabajar de manera no destructiva mientras decide si realmente quiere que desaparezca. Como todos somos interrumpidos y somos algo olvidadizos, no se sorprenda si algunas líneas se registran mientras están en ese estado. Si lo hacen, es bueno que al menos estén claramente marcados y se puedan buscar. Las macros de teclado me han ayudado con esto en el pasado. Es difícil que te interrumpan en medio de esto si puedes hacerlo con una sola pulsación de tecla.
Puede llevar esto hasta el punto de consagrar la marca en sus pruebas de integración continua. Vaya, estoy tratando de registrarme con TODO pendientes nuevamente.
fuente
double buffer (flip on)
-> C prototype or ultra-terse English? no se puede decir sin contexto, no es una construcción completa correcta en ninguno de los dos idiomas. Algunos falsos positivos y negativos son inevitables, cuando los comentarios por su naturaleza no limitan la forma de su contenido en ninguna dirección.Utilizo directivas de preprocesador para eliminar código, no comentarios en absoluto:
Esto hace que sea muy fácil de buscar, y mi resaltador de sintaxis lo trata como un comentario. Incluso puedo colapsarlo en una sola línea:
#if FALSE(...)
Puede ampliar esa idea para tener varias opciones:
Y comprobación de errores en tiempo de compilación:
Por supuesto, no quiere exagerar en esto, o se hace difícil saber qué se está compilando realmente y qué no. Pero se entiende la idea, y de todos modos es el mismo problema que para el código comentado ... siempre que solo lo use estáticamente. Si sus condiciones son dinámicas, es peor.
Para determinar cuál es cuál en una base de código existente que no consideró este problema en absoluto, no creo que haya una solución universal. Tendrá que buscar patrones usted mismo y probablemente codificar una expresión regular para encontrarlos.
fuente
javascript
. Podría hacer un preprocesamiento, pero va a ampliar las capacidades del sistema de compilación y tampoco es estándar. Si no tiene un sistema de compilación o el sistema de compilación no admite el análisis y la ejecución de código, no podrá implementar esta solución. Finalmente, ni siquiera aborda la pregunta: el código comentado no es estrictamente equivalente al código que se activa condicionalmente. Podría ser un sobrante que no está destinado a ser habilitado.Estoy de acuerdo con la respuesta que indica que el código antiguo debe eliminarse en lugar de comentarse cuando sea posible, sin embargo, he observado una convención para las pocas ocasiones en que se necesita un código comentado.
(Mi base es C # pero esto se puede aplicar a cualquier lenguaje de sintaxis C, por ejemplo, Java)
fuente
//
a la primera columna, y dado que prácticamente todo el código está sangrado, el resultado es casi siempre que el comentario comienza con algunas pestañas. Los comentarios normales no obtienen un espacio inicial de mi parte, a menos que ya haya otros comentarios con un espacio principal en la vecindad. Entonces, su método fallaría abismalmente en los comentarios que produje, y cualquier método diseñado para reconocer mis patrones de comentarios fallaría abismalmente en los suyos.Todavía estoy interpretando la pregunta de manera diferente, pensando que quieres encontrar el código comentado.
El código de estilo C seguramente tendrá punto y coma, mientras que es poco probable que los comentarios tengan punto y coma. Entonces, para el código comentado de una sola línea, puede usar esta expresión regular:
Para el código comentado de varias líneas, podría ser
Tenga en cuenta que Visual Studio es un poco peculiar sobre los saltos de línea en las expresiones regulares, no cuentan como espacios en blanco, debe especificar un \ n explícito.
fuente
Si usa un editor con un compilador que se ejecuta en segundo plano (como Xcode y Clang), puede intentar compilar el texto del comentario. Por ejemplo, "una descripción concisa" da errores, "b = falso;" no. A continuación, puede utilizar diferentes resaltados de sintaxis.
Un método más simple sería un complemento IDE que use algunas heurísticas, como palabras múltiples en una fila que no sean palabras clave, puntos para comentarios, coincidencia con punto de rizado para código, etc.
fuente
Otras respuestas han cubierto variaciones sobre el tema "no comentar código". Pero a veces todavía lo quieres como referencia.
Si realmente necesita el código para quedarse, una mejor solución es rodear el código con "#if 0 ... #endif", idealmente con un comentario para decir por qué. Esta es la estrategia recomendada de varios estándares de codificación, incluido MISRA.
fuente
Simple, al menos para mí, y en C / C ++. Los comentarios incluidos en / * * / son informativos. El código de prueba que se elimina temporalmente se comenta con //.
Y hay buenas razones para dejar el código de prueba en el archivo pero comentado, al menos en el tipo de trabajo que hago. Tarde o temprano, alguien querrá hacer un cambio, que necesitará ese código. Descomentar un bloque toma un comando de editor, al igual que volver a comentarlo cuando haya terminado.
fuente
#ifdef __DEBUG ... #endif
, o cualquier definición personalizada que quieras usar.__DEBUG
Sin embargo, es bueno, porque a menudo solo tiene que cambiar la configuración del proyecto para obtenerlo. Pero la mayoría de los IDE también le permiten definir sus propias configuraciones, lo que puede brindarle cualquier cosa en ese lugar.printf
/cout
o similar para obtener el código recién escrito correctamente (lo cual admitiré que lo he hecho en el pasado), realmente no es muy efectivo dejarlos allí. Si alguien quiere hacer cambios y sabe sobre qué variables necesita información, es rápido y fácil escribir losprintf
mensajes de nuevo, mientras que si ese desarrollador no sabe lo que se necesita y simplemente descomenta todas esasprintf
declaraciones, entonces la gran franja de texto en la terminal probablemente tampoco los ayudará.