¿Cómo se decide qué partes del código se consolidarán / refactorizan próxima?

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

  •  09-09-2019
  •  | 
  •  

Pregunta

¿Utiliza alguna métricas para tomar una decisión que partes del código (clases, módulos, bibliotecas) se consolidarán o refactorizan próxima?

¿Fue útil?

Solución

No uso ningún métricas que se pueden calcular de forma automática.

código olores y similares heurística para detectar mal código, y luego voy a arreglarlo tan pronto como me he dado cuenta de ello. No tengo ninguna lista de control para buscar problemas - en su mayoría se trata de una sensación visceral de que "este código es desordenado" y luego razonando que por qué es desordenado y averiguar una solución. refactorizaciones simples como dar un nombre más descriptivo a una variable o la extracción de un método de tomar sólo unos segundos. Más refactorizaciones intensivos, tales como la extracción de una clase, podría tardar hasta un una o dos horas (en cuyo caso podría dejar un comentario TODO y refactorearlo más adelante).

Una heurística importante que yo uso es Responsabilidad Individual Principio . Esto hace que las clases muy bien cohesionado. En algunos casos utilizo el tamaño de la clase en líneas de código como un heurístico para mirar con más cuidado, si una clase tiene múltiples responsabilidades. En mi proyecto actual me he dado cuenta de que cuando la escritura de Java, la mayoría de las clases será de menos de 100 líneas de largo, y con frecuencia cuando el tamaño se aproxima a 200 líneas, la clase hace muchas cosas no relacionadas y es posible dividirlo, a fin de obtener clases cohesivas más específicos.

Otros consejos

Cada vez que tengo que añadir una nueva funcionalidad que busco para el código ya existente que hace algo similar. Una vez que encuentre dicho código pienso en refactorización para resolver tanto la tarea original y la nueva. Ciertamente yo no decido refactorizar cada vez -. Mayoría de las veces me reutilizar el código como está

Yo generalmente sólo refactorizar "bajo demanda", es decir, si veo un hormigón, problema inmediato con el código.

A menudo cuando necesito para implementar una nueva característica o corregir un error, me parece que la estructura actual del código hace que esto sea difícil, como por ejemplo:

  • hay muchos lugares para cambiar debido a copiar y pegar
  • estructuras de datos inadecuados
  • Hardcoded cosas que tienen que cambiar
  • métodos / clases demasiado grandes para entender

A continuación, voy a refactorizar.

A veces veo código que parece problemático, y que me gustaría cambiar, pero me resisto a la tentación de si la zona no se está trabajando en la actualidad.

Veo refactorización como un equilibrio entre el futuro a prueba el código y hacer las cosas que realmente no generan ningún valor inmediato. Por lo tanto, normalmente no se refactorizar a menos que vea una necesidad concreta.

Me gustaría saber acerca de las experiencias de personas que Refactor como una cuestión de rutina. ¿Cómo detener a sí mismo de pulir tanto se pierde tiempo para características importantes?

Cyclomatic_complexity para identificar el código que necesita ser reprogramado siguiente.

Monitor de origen y de manera rutinaria refactorizar métodos cuando la métrica de complejidad va aboove alrededor de 8,0.

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