Trabajo en un equipo de tamaño medio y me encuentro con estos archivos de clase dolorosamente grandes de forma regular. Mi primera tendencia es atacarlos con un cuchillo, pero eso generalmente empeora las cosas y me pone en un mal estado de ánimo.Tratando con objetos de Dios
Por ejemplo, imagine que acaba de recibir un servicio de Windows para trabajar. Ahora hay un error en este servicio y necesita averiguar qué hace el servicio antes de que pueda tener alguna esperanza de solucionarlo. Abre el servicio y ve que alguien decidió usar solo un archivo para todo. El método de inicio está ahí, el método Stop, los temporizadores, todo el manejo y la funcionalidad. Estoy hablando de miles de líneas de código. Los métodos bajo cien líneas de código son raros.
Ahora suponiendo que no puede volver a escribir toda la clase y que estas clases de dios van a seguir apareciendo, ¿cuál es la mejor manera de lidiar con ellas? ¿Dónde comienzas? ¿Qué intentas lograr primero? ¿Cómo lidias con este tipo de cosas y no solo quieres ponerte en aprietos?
Si tiene alguna estrategia para controlar su temperamento, también es bienvenido.
extremidades hasta el momento:
- Establecer cobertura de la prueba
- plegado de código
- Reorganizar los métodos existentes comportamiento
- Documento como descubrió
- proponerse la mejora incremental de
Edición:
Charles Conway recomienda un podcast que resultó ser muy útil. link
Michael Feathers (hombre en el podcast) comienza con la premisa de que tenían mucho miedo de simplemente sacar un proyecto del control de la fuente y simplemente jugar con él directamente y luego descartar los cambios. Puedo decir que soy culpable de esto.
Se dice esencialmente que debe tomar el elemento sobre el que desea obtener más información y comenzar a separarlo. Descubre sus dependencias y luego descárgalas. Síguelo a donde quiera que vaya.
Gran punta Tome la clase grande que se usa en otros lugares y haga que implemente una interfaz emtpy. Luego tome el código usando la clase y haga que cree una instancia de la interfaz. Esto le dará una lista completa de todas las dependencias de esa clase grande en su código.
Ejecutar, y no te detengas a mirar atrás! – JoshBerke
Si solo pudiera Josh ... Si tan solo pudiera ... –
Heh, sí, una vez tuve que revisar esta aplicación COM + de subprocesos múltiples, 20,000 líneas de código, tenía una complejidad cíclica de magnitudes más altas que nunca. visto. Ohh y solo fue como 5 métodos. Yo vomité y me reí de Mgmt por sugerir que "reutilizáramos" este servicio. – JoshBerke