¿Cuál sería el mejor enfoque? Escriba pruebas unitarias para ellos o pregunte por qué están allí.
Eliminar código es algo bueno.
Cuando no puede eliminar el código, ciertamente puede marcarlo como @Deprecated , documentando a qué versión principal está apuntando para eliminar el método. Luego puede eliminarlo "más tarde". Mientras tanto, estará claro que no se debe agregar ningún código nuevo que dependa de él.
No recomendaría invertir en métodos obsoletos, por lo que no hay nuevas pruebas unitarias solo para alcanzar los objetivos de cobertura.
La diferencia entre los dos es principalmente si los métodos son o no parte de la interfaz publicada . Eliminar arbitrariamente partes de la interfaz publicada puede ser una sorpresa desagradable para los consumidores que dependían de la interfaz.
No puedo hablar con EclEmma, pero según mi experiencia, una de las cosas de las que debes tener cuidado es la reflexión. Si, por ejemplo, usa archivos de configuración de texto para elegir a qué clases / métodos acceder, la distinción utilizada / no utilizada puede no ser obvia (eso me ha quemado un par de veces).
Si su proyecto es una hoja en el gráfico de dependencia, entonces el caso de desaprobación se debilita. Si su proyecto es una biblioteca, entonces el caso de desaprobación es más fuerte.
Si su empresa utiliza un mono-repos , entonces eliminar es un riesgo menor que en el caso de múltiples repos.
Como se señala en 10b0 , si los métodos ya están disponibles en el control de origen, recuperarlos después de la eliminación es un ejercicio sencillo. Si estaba realmente preocupado por la necesidad de hacer eso, piense cómo organizar sus confirmaciones para que pueda recuperar los cambios eliminados si los necesita.
Si la incertidumbre es lo suficientemente alta, podría considerar comentar el código , en lugar de eliminarlo. Es un trabajo extra en el camino feliz (donde el código eliminado nunca se restaura), pero hace que sea más fácil de restaurar. Supongo que debería preferir una eliminación directa hasta que se haya quemado un par de veces, lo que le dará algunas ideas sobre cómo evaluar la "incertidumbre" en este contexto.
pregunta por qué están allí?
El tiempo invertido en capturar la tradición no se desperdicia necesariamente. Se sabe que realizo una eliminación en dos pasos: primero, agregando y confirmando un comentario que explica lo que hemos aprendido sobre el código, y luego eliminando el código (y el comentario).
También podría usar algo análogo a los registros de decisiones arquitectónicas como una forma de capturar la historia con el código fuente.