2009-02-23 12 views
13

Me gustaría saber cuáles son las mejores prácticas de las personas para eliminar el código no utilizado. Personalmente, soy partidario de eliminar (no solo comentar) cualquier cosa que no esté siendo utilizada actualmente. Pero no estoy seguro de qué tan lejos llegar.Mejores prácticas para eliminar el código no utilizado

tomar esto como un ejemplo (aunque estoy interesado en el debate). En mi proyecto, tengo una docena de UserControls. Para una característica que luego se enlazó, implementé un par de métodos y propiedades en uno de los UserControls. El código adicional no es específico de la función, pero es necesario para admitirlo. Posiblemente sea útil más adelante.

  • ¿Debo eliminar el código porque no lo estamos usando en este momento, y cuanto menos código hay, más fácil es leerlo? El problema con esto es, ¿cómo saben los futuros desarrolladores que este trabajo ya se ha realizado?
  • O debería mantenerlo allí, por lo que otro desarrollador puede encontrar fácilmente si necesitan usarlo más tarde (que no van a pensar que pasar por control de fuente para ver si alguien había hecho esto y borrado)?
  • ¿O hay otra opción?

Lo mismo se aplica a UserControls actualmente no utilizados. ¿Debería eliminarlos o conservarlos?

Edit: Sobra decir (o pensé que sí) que estamos usando el control de fuente.

Respuesta

34

Lo primero que debe recordar es que todo su código debe estar en el control de fuente.

Con esto en mente, por supuesto que desea borrar el código obsoleto y no sólo como comentario. Los bloques de código comentado de cualquier longitud son simplemente peligrosos, por al menos dos razones:

  1. Hay una tendencia a suponer que los comentarios se mantuvieron con el resto del código. Esto no es cierto y puede dar lugar a problemas como regresiones de errores.
  2. Es fácil pasar por alto una llave de cierre sin comentar (por ejemplo) en el medio de un bloque largo.

El código eliminado todavía disponible si realmente lo necesita, pero ya no es estorbar encima de sus copias de trabajo. Si está realmente preocupado por la detectabilidad del código anterior, puede dejar un comentario que indique que se eliminó el código y el número de revisión que necesita para encontrarlo. En una línea, es mucho mejor que lo que estaba usando el bloque de código real, y es mucho más claro que se ha permitido que este código caduque, y exactamente cuánto tiempo ha transcurrido.

+0

Sugiere agregar un # 3: el código no utilizado no es probable que se pruebe bien y teóricamente podría introducir errores y/o agujeros de seguridad. – JohnFx

+0

Eso cae bajo 'mantenimiento', por lo que es más o menos lo mismo que razón # 1. –

+0

+1. También encuentro que los bloques de código comentados parecen llamar tu atención mientras escaneas, no quieres que te distraiga el código. –

5

Si está utilizando un sistema de control de código fuente, borrar el código es mi opción preferida.

No va a ponerse en su camino cuando se trabaja con el código actual, y que siempre tenga el código en el repositorio si alguna vez lo necesita de nuevo.

+0

"[Ya que está] usando un sistema de control de fuente, eliminar el código es mi opción preferida". - allí, arreglado eso para ti. – Instantsoup

+0

@Instantsoup: gracias – VBNight

4

Una pieza de código puede tener dos estados.
O bien está activo, funcionando y probado, en cuyo caso debería estar en el control de fuente
O está obsoleto de manera que no se puede imaginar a nadie que quiera usarlo nunca más, simplemente porque está obsoleto. En este caso, debe ser eliminado.

No borrar el código para que "otro desarrollador lo pueda encontrar fácilmente" es una buena razón para mantener el código activo y compilar. No se preocupe por el tamaño de sus bibliotecas, el vinculador elimina todo lo que no se utiliza.

Si está borrando el código y desea advertir a otros del código que estaba allí y por la razón que fue eliminado para que no cometan el mismo error otra vez, se puede poner un buen comentario en su lugar.

1

También soy seguidor de eliminar código no utilizado.

Si sé que el código puede ser útil más adelante, creé una rama antes de eliminar el código del tronco (estamos usando subversión, por lo que crear ramas es muy barato y fácil). Esto me permite recuperar fácilmente ese código una vez/si es necesario.

Por ejemplo, si tiene una característica nueva, que no se completará para un lanzamiento, este procedimiento permite eliminar la característica parcial del tronco, pero podrá volver a agregarla una vez que termine eso.

2

Supongo que incluso si comenta que está en el repositorio, se volverá a escribir en lugar de que alguien regrese y lo agarre.

No es que haya trabajado en muchos lugares con esta política de "no código dejado" (solo uno), pero NUNCA he visto a alguien volver al repositorio y obtener un código anterior.

Sin embargo, a excepción de los bloques pequeños, ¡nunca he visto a nadie eliminar el código de otra persona tampoco!

Si quisiera guardarlo, lo dejaría totalmente implementado y probado (¡revise las pruebas!) Pero bajo una condición que cambiará si alguna vez se necesita el nuevo código.

He tenido código innecesario solo "Encienda" cuando fue necesario, es una sensación muy agradable (no siempre se puede hacer).

Si no puede molestarse en que sea completamente funcional y probado, córtelo y deje que el siguiente tipo lo vuelva a escribir.

2

Normalmente dejo el código muerto inactivo por un tiempo hasta que se estabilice su uso & No volveré a utilizar esa funcionalidad. En ese punto, lo elimino.

1

Tenemos un área "obsoleta" en nuestro árbol de fuentes donde movemos cosas que ya no se usan. Está lejos del tronco en un área que normalmente no está desprotegida, por lo que nadie tiene que mirarla.

1

Voy a sugerir que se reemplace el código eliminado con un comentario que especifique el elemento de trabajo con el que se eliminó el código. Mi razón de ser es que esto proporciona un "gancho" sobre el cual se pueden adjuntar comentarios de revisión de código. Estamos utilizando conjuntos de cambios TFS para hacer revisiones de código VS Professional. Si el código está 100% eliminado, no hay gancho.

Cuestiones relacionadas