tengo una gran base de código que trabajo con el que cuenta con unidades como esta:¿Hay alguna herramienta o complemento para Delphi que pueda usar para ayudar a refactorizar código que no esté orientado a objetos?
unit myformunit;
interface
type
TMyForm = class(Form)
end;
procedure not_a_method1;
procedure not_a_method2;
var
global1,global2,global3:Integer;
...
En resumen, los autores del código no escribir métodos, escribieron los procedimientos globales. Hay decenas de miles de ellos. Dentro de estos procedimientos, hacen referencia a una sola instancia de MyForm:TMyForm
.
Estoy considerando escribir una utilidad de analizador/reescritura que convertirá este código en "al menos un código mínimamente orientado a objetos". La estrategia es mover los elementos globales de la interfaz y la implementación al formulario, como un comienzo. Me doy cuenta de que no es muy elegante OOP. Pero es un paso adelante de los globales.
Si pudiera hacer esto en una unidad a la vez, podría reparar la rotura en el resto del proyecto, si solo lo hiciera en un formulario a la vez. Pero me gustaría reducir el tiempo que lleva reescribir las unidades, en lugar de hacerlo a mano. Algunas formas tienen más de 500 procedimientos y más de 500 variables globales de interfaz e implementación que, de hecho, son específicas del estado de una instancia única de la forma en que se encuentran en la misma unidad.
Básicamente, lo que haré si nada de esto existe es escribir un analizador basado en el analizador Castalia Delphi. Espero que quizás ModelMakerCodeExplorer, o castalia, o alguna otra herramienta similar tenga algo que al menos haga parte de lo que necesito para mí, así que no tengo que construir esta utilidad yo mismo. Incluso si tengo que construirlo yo mismo, estimo que podría automatizar entre mil y dos mil horas de trabajo pesado para mí. Al menos puedo ejecutarlo, y luego ver cuánto se rompe, y luego revertir o comprometerme después de haber decidido un nivel de esfuerzo para refactorizar este código.
estrategiasalternativos que logran el mismo objetivo (ir de cero encapsulación y cero programación orientada a objetos, a más de encapsulación, y un poco más que cero programación orientada a objetos, de manera incremental, sobre una base de código de Delphi grande, no estructurada que sólo utiliza objetos cuando estaba inevitable, y nunca tuvo ninguna idea acerca de OOP real) son bienvenidos.
Después de haber pasado por algo similar, todo lo que puedo decir es, buena suerte, lo necesitarás. :( –
Gran pregunta y escenario, solo creo que 1-2K horas (aproximadamente 40 días sin parar) es probablemente un poco más de lo que probablemente podría tomar. He hecho * algún * análisis pascal/dfm antes y con la derecha herramientas, en realidad no es tan difícil. Estoy tratando de encontrar lo que usé para eso ahora, pero creo que fue en la línea de "Gold Parser" que puede tener un complemento explícitamente para Pascal ... http: //www.goldparser.org/engine/1/delphi/index.htm –
En realidad, sus "Gramáticas" incluyen una para Delphi 7 en particular –