¿Cuál es una buena relación de clase a líneas de código para lenguajes orientados a objetos? [cerrado]

StackOverflow https://stackoverflow.com/questions/186070

Pregunta

¿Cuál es una buena relación entre el número de clases y líneas de código para un lenguaje orientado a objetos (por ejemplo, C ++, C #, Java y sus gustos)?

Muchas personas, incluidos los gerentes, como la métrica tradicional de LOC (líneas de código) para medir la complejidad del software, mientras que muchos desarrolladores orientados a objetos duros dirán que LOC no vale su cuenta de clase que importa. Y personalmente, creo que las clases pueden ser una métrica de complejidad más razonable, pero que sin una métrica LOC, la complejidad real de esas clases (cantidad de poltergeists y dioses allí) es difícil de estimar.

Por lo tanto, ¿alguien sabe qué es probable que sea una relación saludable para algún software bastante bien codificado?

Editar: en este caso particular, estoy buscando una relación para determinar una estimación aproximada de cuánta refactorización podría ser necesaria para limpiar el código.

Editar: ¿Alguien sabe de proporciones para algunos grandes proyectos de OSS como Firefox, Apache, Webkit, etc.?

¿Fue útil?

Solución

Los LOC o NLOC no son realmente una buena medida de la calidad o el estado de su código. Recomiendo el uso del análisis de código estático de NDepend (para sus píos .net) para ver qué tan bien está diseñada su solución.

Encuentro que los LOC son una buena medida solo a nivel de método. Es decir, generalmente me gustan mis métodos para que quepan en una pantalla (no fuentes pequeñas). Otras métricas como la Complejidad Ciclomática y la Cobertura del Código (para sus TDDers) además de sus pruebas unitarias pueden brindarle una mejor idea de cuán saludable es su base de código.

Otros consejos

Realmente no habrá una respuesta buena, definitiva o satisfactoria para esta pregunta. Sin embargo, diré que en mi experiencia, las líneas de código por clase disminuyen con una mayor experiencia en programación orientada a objetos.

La mayoría de las personas que no han estudiado los principios de diseño orientado a objetos tenderán a tener clases con muchas y muchas líneas de código. Las personas con mucha experiencia orientada a objetos tenderán a tener menos líneas de código por clase, pero tendrán muchas más clases. Y, por supuesto, ambos se quejarán el uno del otro :-).

Si realmente está buscando una regla general, entonces diría que cualquier clase que no pueda imprimirse en una sola hoja de papel con una resolución legible es posiblemente demasiado larga y debería ser refactorizada. Su marca de destino podría estar en el orden de 100-200 líneas, pero, en mi opinión, el número de páginas es un poco más fácil de manejar.

También creo firmemente que la métrica del número de páginas debe considerarse como una medida factorial de maldad en lugar de lineal. Si hay una clase de diez páginas en la base del código, parece que es al menos tres millones veces peor para mí que una clase pequeña y bien diseñada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top