2011-04-13 37 views
5

Se me ha pedido que reescriba (desde cero) una aplicación existente de C# winforms. Desafortunadamente, este código ha sido modificado por al menos una docena de desarrolladores diferentes en los últimos tres o cuatro años, ninguno de los cuales aparentemente se adhirió a ningún tipo de estándar de codificación. Decir que esta base de código es un desastre sería ponerlo educadamente. Dada la magnitud del código (~ 24k líneas) y el hecho de que el código es completamente nuevo para mí, me gustaría encontrar algún tipo de utilidad que me ayude a entender más rápidamente cómo funciona esta aplicación a un alto nivel. Tenga en cuenta que no parece haber una gran cantidad de buenas prácticas de POO en este código, así que necesito algo un poco más detallado que los diagramas de clase. He visto referencias para generar diagramas de secuencia que podrían ser más parecidos a lo que estoy buscando, pero solo tengo VS2010 Premium y tengo la impresión de que esta funcionalidad solo se proporciona con el SKU de VS Ultimate. Tengo acceso a la versión actual de .NET Reflector y he visto a algunas personas mencionar que hay complementos para eso que podrían ser útiles, pero no tengo ningún nombre específico.utilidad de visualización/mapeo de flujo de código C#?

+0

Para averiguar qué código está involucrado en una tarea determinada, utilizaría una herramienta de cobertura de código como PartCover o una (mejor) alternativa comercial. Eso a menudo me ayuda a entender. Sin embargo, no estoy publicando como respuesta porque realmente no recuerdo cómo hacer esto. – Qwertie

Respuesta

6

Reescribiendo el código desde cero puede ser un desastre: Ver esto: http://www.joelonsoftware.com/articles/fog0000000069.html

Ésta no es una tarea fácil ya que usted ha mencionado había una docena de desarrolladores antes de usted. Detrás de cada desarrollador está su propia metodología y su propia lógica del sistema. Todos lo hacen a su manera.

Éstos son algunos de los problemas que pueden surgir

  • Siguiendo otra lógica desarrolladores
  • Sea o no el desarrollador todavía está alrededor o ha cambiado de posición o cambiado de trabajos peores
  • Encontrar el o incluso si existe una especificación técnica (esta es la más importante)
  • Código heredado que fue escrito originalmente, luego parcheado, luego parchado una y otra vez ...
  • Personalizado código que podría haber sido integrados o escrita dentro de la aplicación
  • seguridad si hay alguna

Además de tener un montón de diagramas de flujo/diagramas de la aplicación lo mejor que puede solicitar u obtener es la especificación técnica . ¿Cuál es el propósito del programa y dado que otras 12 personas trabajaron en él es algo que puede asumir usted mismo?

Mencionaste OOP, ¿planeas tomar código de espagueti y hacer una reescritura completa para ajustarse al modelo orientado a objetos? Si eso es mucho trabajo ... y con 12 cerebros anteriores trabajando en ello, la lógica de alguien te hará tropezar.

Lo siento, no tengo el mejor consejo, pero esto podría ser una tarea desalentadora ... especialmente si los desarrolladores antes que usted ya no están allí.

Ver estos SO hilos para obtener más información:

+0

Hola Jon. Gracias por su respuesta rápida. Usted hace muchos buenos puntos. Desafortunadamente, esta es una de esas situaciones en las que me dicen que "esto es lo que vamos a hacer". De hecho, le mencioné algunos de estos mismos argumentos a mi empleador, pero han decidido que es necesario volver a escribirlos y se han comprometido a hacerlo (o, mejor dicho, a encargarme que lo haga, según sea el caso). :-( – user685869

+0

Si tiene que volver a escribir (personalmente disfruto de eso: D) puede intentar aislar piezas de funcionalidad - copiar piezas útiles en nuevos proyectos y escribir pruebas unitarias - para usar en la nueva versión. Ah, y por cierto, cuándo escribiendo una nueva aplicación GUI. Recomiendo aprender Controles de actualización - http://loyc-etc.blogspot.com/2011/04/update-controls.html - una vez que lo averigüe, acelerará el desarrollo. – Qwertie

0

Estoy bastante seguro de que, si bien el conjunto no es válido, algunas partes del código existente son perfectamente buenas. Le sugiero que tome esas partes, haga pruebas unitarias a su alrededor y gasp, copie y péguelos en su nuevo proyecto. De esa manera, filtrará poco a poco su desorden en algo reformado y probado.

Además, algo que siempre he querido hacer es imprimir una gran cantidad de código y visualizar el flujo de trabajo mediante el corte (con tijeras de metal real) y volver a pegarlos cómo se utilizan.

Cuestiones relacionadas