2012-10-11 1 views
6

मुझे लगता है कि कुछ प्रकार के कोड क्लीनअप और रिफैक्टरिंग एक बड़ी परियोजना के उपयोग-खंडों में इकाई जोड़ने की कठिनाई से बहुत मुश्किल हो जाती हैं।किसी प्रोजेक्ट में सभी इकाइयों के उपयोग खंडों में एक इकाई जोड़ना?

मैं एक एकल परियोजना में सभी डेल्फी .pas इकाइयों के इंटरफ़ेस-उपयोग-खंड में एक इकाई जोड़ना चाहता हूं, और इसका मतलब है कि 500 ​​से अधिक स्थानों में मैन्युअल रूप से ऐसा करना। हर बार जब मैं एक विशाल इकाई को दोबारा दोहराता हूं और इसे एक इकाई से दो में विभाजित करता हूं, तो शायद मैं "माईओल्ड यूनीट" को "मायऑल्ड यूनीट, माई न्यूयूनीट" में बदलने के लिए "नोटपैड ++" जैसे कुछ का उपयोग करके खोज और प्रतिस्थापित कर सकता हूं, लेकिन कभी-कभी, यह करना सुरक्षित नहीं है । यह उन मामलों को भी याद करता है जहां "MyOldUnit" उपयोग खंड में अंतिम बात है ("MyOldUnit का उपयोग करता है;")।

वैसे भी, फ़ाइलों में खोज और प्रतिस्थापन खतरनाक व्यवसाय है। यदि ऐसा कोई उपकरण मौजूद नहीं है, तो मैं कास्टेलिया डेल्फी पार्सर का उपयोग करके एक लिखने पर विचार कर रहा हूं। मैंने GExperts, Castalia, ModelMakerCodeExplorer की जांच की है और उनमें से कोई भी परियोजना में सभी उपयोग खंडों में बैच-सम्मिलित इकाइयों का एक तरीका नहीं है। मुझे उम्मीद है कि यह करने के लिए एक उपकरण मौजूद है।

दूसरा, कई मामलों में, मैं एक इकाई से एक समारोह चला रहा हूं जहां यह किसी अन्य से संबंधित नहीं है, लेकिन इसका मतलब है कि मुझे उस इकाई को परियोजना की इकाइयों के 30% में जोड़ने की जरूरत है, लेकिन अन्य 70 % जहां यह पहले ही जोड़ा जा चुका है। इसका मतलब है कि एक पार्सर दृष्टिकोण की आवश्यकता है, न कि रेगेक्स दृष्टिकोण।

+2

वहाँ (बहुत पुरानी) है 'JclUsesWizard' में JCL \ विशेषज्ञों \ useswizard, शायद यह आप एक प्रारंभिक बिंदु के रूप में सेवा कर सकते हैं। –

+0

ऐसा करने के लिए आपको वास्तविक पार्सर की आवश्यकता नहीं है। पर्ल या पायथन या रेगेक्स स्क्रिप्टिंग के लिए जो कुछ भी आपको पसंद है, उसका उपयोग करके बस एक बुरा रेगेक्स आधारित स्क्रिप्ट। यदि आप कुछ मजबूत चाहते थे, तो आपको एक वास्तविक पार्सर की आवश्यकता होगी, लेकिन एक शॉट एप्लिकेशन के लिए अपने कोड बेस पर, आप नहीं करते हैं। –

+4

क्या आपने अभी तक सीएनपीक की कोशिश की है? – kobik

उत्तर

3

क्योंकि हम सभी कोड लिखते हैं हम निश्चित रूप से अन्य परियोजनाओं में उपयोग करेंगे। यदि आप इंटरफ़ेस भागों को एक इकाई से दूसरे में ले जाते हैं तो आप अपनी परियोजनाओं को तोड़ देंगे। पुराने और नए इकाइयों के साथ ही।

लेकिन आप अपनी परियोजनाओं को तोड़ने के बिना रिफैक्टर कर सकते हैं। बस भागों (इकाई, वर्ग, विधि, प्रक्रिया) को बहिष्कृत के रूप में चिह्नित करें। आपका कोड काम कर रहा है, लेकिन आपको संकलक द्वारा चेतावनी दी जाएगी।

यहाँ एक और करने के लिए एक इकाई से एक प्रक्रिया चलती का एक उदाहरण:

unit Foo; 

interface 

procedure FooProc; deprecated; // new location in unit FooNew 

implementation 

uses 
    FooNew; 

procedure FooProc; 
begin 
    FooNew.FooProc; 
end; 

end. 
+0

यह एक बहुत ही व्यावहारिक विचार है। +1। –

संबंधित मुद्दे