Ben hangi ile böyle birimine sahip çalışıyorum büyük bir kod temeli vardır: KısacaDelphi için Nesne Yönelimli olmayan refactor koduna yardımcı olmak için kullanabileceğim herhangi bir araç veya eklenti var mı?
unit myformunit;
interface
type
TMyForm = class(Form)
end;
procedure not_a_method1;
procedure not_a_method2;
var
global1,global2,global3:Integer;
...
kod yazarları küresel prosedürleri yazdı yöntemleri yazmadım. Onlardan binlerce var. Bu prosedürlerin içinde, tek bir MyForm:TMyForm
örneğine başvururlar.
Bu kodu "en az nesne tabanlı kod" haline getirecek bir çözümleyici/yeniden yazma programı yazmayı düşünüyorum. Strateji, arayüz ve uygulama bölümü globals'ını bir başlangıç olarak forma taşımaktır. Fark ettim ki, bu hiç de şık olmayan bir OOP. Ama bu globals'tan ileriye doğru bir adım.
Bunu bir kerede bir birim üzerinde yapabilseydim, projenin geri kalanında, yalnızca bir seferde tek bir formda yapsaydım, kırmayı onarabilirim. Ama el ile yapmak yerine, birimleri yeniden yazmak için gereken süreyi azaltmak istiyorum. Bazı formlar, gerçekte, aynı birim içinde bulundukları formun tek bir örneğinin durumuna özel 500 + yordamları ve 500+ arabirim ve uygulama genel değişkenlerine sahiptir.
Temel olarak, bunun gibi bir şey yoksa ne yapacağım, Castalia Delphi ayrıştırıcısını temel alan bir ayrıştırıcı yazar. Belki ModelMakerCodeExplorer, ya da castalia, ya da başka bir benzer araç en azından benim için gereken şeylerin bir parçası olacak bir şey var umuyoruz, bu yüzden bu programı kendim yapmak zorunda değilim. Kendim inşa etmem gerekse bile, binden fazla iki bin saat süren homurdanma işini otomatik hale getirebileceğini tahmin ediyorum. En azından onu çalıştırabilirim ve daha sonra ne kadar kırıldığını görebilirim, sonra da bu kodu yeniden düzenlemek için bir çabaya karar verdikten sonra geri dönüp iadesi ya da taahhüt ederim.
Aynı hedefi gerçekleştiren alternatif stratejiler (sıfır kapsülleme ve sıfır OOP'dan, daha fazla kapsülleme ve sıfır OOP'tan biraz daha fazla), yalnızca nesneler kullanıldığında büyük, yapılandırılmamış bir delphi kod tabanı üzerinde kaçınılmaz ve gerçek OOP hakkında hiç bir fikrim yoktu) karşılandı.
Benzer bir şey yaşadım, söyleyebileceğim tek şey, iyi şanslar, buna ihtiyacınız olacak. :( –
Harika bir soru ve senaryo, sadece sanırım 1-2K saat (yaklaşık 40 gün kesintisiz) muhtemelen muhtemelen alabileceğinden biraz daha fazla. Yaptım * bazı * pascal/dfm önce ve sağda ayrıştırma araçlar, aslında o kadar da zor değil, şu anda bunun için ne kullandığımı bulmaya çalışıyorum, ama Pascal için açıkça bir eklenti olabilecek "Altın Ayrıştırıcı" nın çizgileri boyunca olduğuna inanıyorum. //www.goldparser.org/engine/1/delphi/index.htm –
Aslında "Gramerler", özellikle Delphi 7 için bir tane içerir. –