2008-09-09 12 views
6

día G,Malos olores al revisar el código afecta el enfoque?

Estaba pensando en un comentario de Kristopher Johnson sobre mi respuesta a esta question respecto a la calidad de desarrollo de software.

me gustaría publicado una lista de las métricas de calidad de software que podría pensar en la parte superior de la cabeza que incluye:

  1. McCabe ciclométrico Complejidad - básicamente una medida del número de trayectorias lineales a través de código.
  2. Niveles de sangría: una medida de complejidad cuando se observan sentencias de decisión anidadas.
  3. Distancia desde la declaración hasta el primer uso: cuántas declaraciones existen entre el lugar donde se declara una variable y dónde se usa por primera vez.
  4. Porcentaje de comentarios: cuántas líneas de código son comentarios en comparación con el código fuente.
  5. Cobertura de porcentaje de pruebas: como porcentaje de las líneas de código, cuántas se ejercen en su conjunto de pruebas.
  6. Cobertura de prueba de ruta: cuántos caminos de ejecución ejercen sus pruebas.
  7. Cobertura unitaria: la cantidad de unidades individuales, clases, paquetes, etc., que se ejercen mediante las pruebas unitarias.

comentario de Kris era:

Sólo las métricas de prueba de cobertura figuran en esta lista podrían considerarse una medida de "calidad". Las otras son mediciones de complejidad y legibilidad, que realmente no tienen nada que ver con la calidad.

Aparte del hecho de que no estoy de acuerdo con esta declaración en absoluto, me hizo pensar.

Cuando tengo que revisar el código que apenas tiene pruebas asociadas, ya sea de unidad, sistema o integración, tiendo a acercarme mucho más al código que si veo un buen conjunto de pruebas que han pasado con éxito.

Lo mismo cuando se realizan auditorías de seguridad en el código. Si veo variables no utilizadas, grandes funciones, mezclas extrañas de configuraciones, por servidor, por directorio, etc. que se utilizan en los módulos de Apache, también me predisponen a acercarme al código con mucha cautela.

¿Alguien más usa este enfoque inicial de "intuición" y afecta el resultado?

BTW No estoy de acuerdo con el comentario de Kris porque todas las demás métricas son definitivamente medidas válidas que ayudarán a resaltar el código mal diseñado y mal ejecutado. Como dice Damian Conway:

Siempre codifica como si el tipo que termina manteniendo tu código será un psicópata violento que sabe dónde vives.

Respuesta

6

Desarrollado "instinto" es lo que distingue a los principiantes de los profesionales. Después de ganar algo de experiencia, la "sensación instintiva" se convierte en uno de los principales contribuyentes a la decisión final. No importa si está revisando el código de alguien o creando una arquitectura de sistema, la intuición lo guía. Sin embargo, el desarrollador pragmático no debe ser demasiado seguro de sí mismo. Siempre hay un lugar para listas de verificación y otros medios.

En cuanto a las métricas, estoy totalmente de acuerdo con usted. La métrica no tiene sentido si no contribuye a la calidad del código.

+0

Pero seguramente la "sensación visceral" solo se establece después de un largo período de amarga experiencia y, por lo tanto, no podría estar en el dominio del "principiante". –

+0

Es como es. – aku

+0

Lo siento aku! Me postro frente a ti y me disculpo por haber malinterpretado tu comentario. ¡Veo que realmente estamos de acuerdo! (-: –

1

Creo que usted y Kris simplemente no están de acuerdo con la definición de calidad. Tome la analogía de una prueba en Matemáticas.

Se podría argumentar que la calidad se reduce a si la prueba es correcta, es decir, va correctamente de las suposiciones al resultado.Sin embargo, la mayoría de los matemáticos estarían de acuerdo en que algunas pruebas son mejores que otras porque son más cortas, o más hábilmente, o más fáciles de entender, y estas son medidas de calidad. Solo la primera definición es formalmente definible, pero la mayoría de los matemáticos creo que significaría la segunda si dijeran "una mejor prueba".

Qué dice Kris es cierto en la primera definición, los ensayos que mide realmente corrección, pero creo que la mayoría de los programadores, incluido yo, sería asociar calidad con sus medidas también.

+0

De acuerdo. La corrección es de hecho demostrable. Pero si se implementa una solución en un código que está mal diseñado y mal implementado, ¿no te estás disparando en el pie cuando llega el momento de mantener ese código? Como tal, el valor del código no tiene valor para la empresa para la que se implementó. –

1

Sí, la "agallamiento del intestino" es una muy buena herramienta tan pronto como tenga un poco de experiencia. Me parece recordar que Hunt y Thomas lo mencionan en el Pragmatic Programmer. Dicen algo como "tienes mucha experiencia, así que no ignores esa sensación molesta" (si tienes la cita correcta, o si es de otro libro, por favor corrígeme).

Carl

Cuestiones relacionadas