2010-02-13 11 views
10

Duplicar posibles:
Is it possible to write good and understandable code without any comments?¿Cómo puedo escribir código sin "necesitar" comentarios para la legibilidad?

Al codificar menudo escucho que si se necesitan comentarios, entonces significa que el código es demasiado difícil de entender. Estoy de acuerdo en que el código debe ser legible, pero a menudo el lenguaje mismo hace que el código sea difícil de seguir, debido a la "fontanería" y la sintaxis extraña. Los idiomas que utilizo con más frecuencia son:

Java Mootools Rubí Erlang

Cualquier consejo sería apreciado? Gracias

+1

Duplicado: http://stackoverflow.com/questions/784250/is-it-possible-to-write-good-and-understandable-code-without-any-comments – tangens

+3

Tenga en cuenta que el código no puede decirle por qué algo se hace de una manera particular, solo CÓMO. –

+2

Es un mito que solo los comentarios pueden decir "por qué". A veces necesitas un comentario para eso, pero a menudo el código puede contar toda la historia. Mira, un comentario no está mal. Pero considere la necesidad de que los comentarios sean una señal de que el código podría, tal vez, hacerse más claro. –

Respuesta

23

No creo que normalmente pueda escribir código sin comentarios.

En pocas palabras, el código documenta cómo. El documento de comentarios por qué.

Espero que los comentarios indiquen las condiciones por las que el código ha sido escrito así, las limitaciones impuestas por los requisitos o las externalidades, el impacto que resultaría de cambiar el código y otros errores. Los comentarios contienen información que no está contenida dentro del código en sí.

+1

@Brian: ¿y qué garantiza que esos comentarios se actualicen en consecuencia cuando cambie el código? ¿Y cuál es el uso de un comentario que me dice por qué la versión original del código _n_ años atrás, que a menudo no tiene el más mínimo parecido con la versión actual, se escribió tal como era? –

+2

@ Peter Usted garantiza que los comentarios se actualizan mediante el uso de revisiones de código o programación de pares. – MarkJ

+0

Recomendaría prestar más atención a escribir código de auto-documentación que escribir comentarios. A menudo veo demasiados comentarios en el código que realmente no lo necesitan. – willcodejavaforfood

21

Lectura recomendada: Clean Code por Robert C. Martin.

En resumen, usted debe

uso
  • nombres de variables/método/clase significativas,
  • mantienen sus funciones/métodos de corta,
  • tener cada clase y método de hacer una sola cosa,
  • tener el código en cada método en el mismo nivel de abstracción.

No tema extraer expresiones incluso moderadamente complejas de if declaraciones; cuál es más claro para leer, esto

if (i >= 0 && (v.size() < u || d == e)) ... 

o

if (foundNewLocalMaximum()) ... 

(No tratar de encontrar algún significado en el primer fragmento de código, me acabo de inventar :-)

Los comentarios en código limpio casi nunca se necesitan. Las únicas excepciones que se me ocurren es si está utilizando alguna función oscura del lenguaje (por ejemplo, metaprogramación de plantillas C++) o algoritmo, y da una referencia a la fuente del método/algoritmo y sus detalles de implementación en un comentario.

La razón principal por la que cualquier otro tipo de comentarios no es muy útil a largo plazo es que el código cambia, y los comentarios tienden a no actualizarse junto con los cambios en el código correspondiente. Así que después de un tiempo el comentario no es simplemente inútil, pero es engañoso: te dice algo (notas de implementación, razonamiento sobre las elecciones de diseño, correcciones de errores, etc.) que se refiere a una versión del código que ya pasó, y tienes no tengo idea si ya es relevante para la versión actual del código.

Otra razón por la que creo que "el motivo por el que elegí esta solución" a menudo no vale la pena documentar en el código, es que la versión breve de dicho comentario casi siempre sería "porque creo que este es el mejor manera ", o una referencia a, por ejemplo, "The C++ Programming Language, ch. 5.2.1", y la versión larga sería un ensayo de tres páginas. Creo que un programador experimentado ve y entiende a menudo por qué el código se escribe así sin mucha explicación, y un principiante puede no entender incluso la explicación en sí misma: no vale la pena tratar de cubrir a todos.

Por último pero no menos importante, las pruebas de unidad IMO son casi siempre una mejor forma de documentación que los comentarios del código: las pruebas unitarias documentan su comprensión, suposiciones y razonamiento sobre el código bastante eficientemente, además se le recuerda automáticamente que las mantenga sincronizar con el código cada vez que los rompa (bueno, siempre que los ejecute con su compilación ...).

+1

Definitivamente estoy de acuerdo en que los comentarios a menudo se descuidan cuando cambia el código. ¡Buen punto! – Zubair

+0

Debe garantizar que los comentarios se actualicen mediante el uso de revisiones de código o programación de pares. – MarkJ

+2

+1 para recomendar Clean Code. –

7

Los comentarios a lo largo del código se supone que le dicen por qué inicialmente hizo algo de cierta manera. No debería significar que el código es demasiado difícil de entender.

4

Las cosas más importantes a seguir son los siguientes:

  • dar a sus variables, métodos, clases ... nombres significativos
  • clases de escritura/módulos con una responsabilidad limpia
  • No mezcle diferentes niveles de código (no haga cambios de bit y lógica de alto nivel dentro de un método)
1

Debe seguir ciertas reglas.

  • Proporcione a las entidades (variable, clases, etc.) nombres legibles y significativos.
  • Use patrones de diseño ampliamente y asígneles el nombre, p. Ej. si es Factory nómbrelo FooFactory.
  • tienen el código de formato correcto, etc.
+1

Si va a utilizar un patrón de diseño, entonces sí, para Por Dios, nómbrelo en consecuencia. Pero no estoy convencido de que el uso de patrones de diseño en sí sea una ventaja para el código legible, especialmente en Ruby. . – Shadowfirebird

2

Creo que es útil para escribir comentarios para los usuarios de su código - lo que las clases/métodos/funciones hacen, cuando una forma de llamarlo, etc. En otra las palabras documentan la API.

Si necesita comentar cómo funciona un método para el beneficio de los mantenedores, entonces creo que el código es probablemente demasiado complejo. En ese caso, refactorícela en funciones más simples, como han dicho otros.

2

Personalmente siento que no tener ningún comentario es tan malo como tener comentarios excesivos. Solo necesitas encontrar el equilibrio correcto. Sobre el uso de nombres descriptivos largos para cosas, esto lo resume para mí: read this Lea también Kernighan & Lucio en nombres largos.

Cuestiones relacionadas