¿Existe una correlación entre la complejidad del código y la productividad del desarrollador?

10

¿Vale la pena el tiempo dedicado a refactorizar una base de código a largo plazo, en términos de productividad del desarrollador?

Me parece bastante claro que modificar un sistema limpio y bien diseñado es mucho más simple y rápido que trabajar en uno mal diseñado, pero busco alguna evidencia sólida. ¿Hay algún estudio sobre este tema?

Benny Hallett
fuente
Ver RECONSTRUCCIÓN
2013
1
Comience a mantener un desastre usted mismo y sea el juez.
Tulains Córdova

Respuestas:

16

Empíricamente, el software con métricas de mayor complejidad, como la complejidad ciclomática, es más difícil de mantener. Hay investigaciones que respaldan esto desde la década de 1970 ("Complejidad del programa y productividad del programador", ET Chen) . También hay trabajo que sugiere que la densidad de complejidad, que es la complejidad ciclomática sobre el tamaño del sistema, también se relaciona con el tiempo de mantenimiento ("densidad de complejidad ciclomática y productividad de mantenimiento del software", GK Gill, CF Kemerer) , que también está disponible de forma gratuita aquí . Desafortunadamente, una suscripción a IEEE es necesaria para el trabajo de Chen, pero puede intentar buscarla en otras fuentes si está interesado.

Desde una perspectiva de calidad, a menudo vale la pena pasar algún tiempo refactorizando, suponiendo que tenga un marco de prueba para evitar la introducción de nuevos defectos. Esto le permitirá implementar más fácilmente nuevas funciones en su sistema, agregar pruebas adicionales y capacitar a nuevos desarrolladores para que trabajen.

Sin embargo, en última instancia, existe la presión de ofrecer una nueva funcionalidad y un valor agregado. Debe equilibrar la refactorización con la implementación de nuevas funciones y la reparación de defectos.

Thomas Owens
fuente
2
Otro punto a agregar es que cuando refactoriza, es probable que también implemente funciones de una manera mejor / más eficiente / más limpia. Hay un adagio que he escuchado innumerables veces en el sentido de que "en 5 años te avergonzarás de que pensaste que tu código era 'bueno'"
Warren
1
@hakre Lo comprobé cuando publiqué esto y nuevamente, usando una búsqueda en la web de Google y Google Scholar. En el momento en que escribí originalmente esta publicación, ninguno de los periódicos estaba disponible sin compra. Sin embargo, desde entonces, se ha publicado un artículo en un dominio de la Universidad de Pittsburgh que parece pertenecer a uno de los autores y le agregué un enlace. El otro documento no está disponible de forma gratuita. Agregué los títulos al cuerpo de la publicación para facilitar su búsqueda. Si no desea leer los documentos, deberá aceptar mi análisis, junto con mi conocimiento y experiencia.
Thomas Owens
0

Estoy tras alguna evidencia sólida

Entonces deja de perder tu tiempo aquí.

  1. Encuentra un código que sea caro de mantener. Es fácil. Mire los tickets de problemas de su organización.

  2. Encuentre un código que sea barato de mantener. Encuentre el código que se ejecuta con frecuencia, pero tiene pocos o ningún ticket de problema.

  3. Mida la complejidad con cualquiera de las herramientas de complejidad ampliamente disponibles.

  4. Disfruta de la evidencia.

Ahora ha proporcionado números para confirmar lo obvio.

S.Lott
fuente
55
Realmente no. La complejidad de la tarea realizada por el software debe distinguirse de la complejidad adicional causada por la implementación elegida.
reinierpost
44
-1 no es una respuesta
Dave Hillier