2008-10-08 13 views
6

हमारे उत्पाद में हमारे पास एक बड़ी उपयोगिता फ़ाइल है जिसे हमें हमारी कई फाइलों की शुरुआत में (करने के साथ) की आवश्यकता होती है। क्या मॉड्यूल में इसे बदलने के लिए कोई कारण नहीं है? उदाहरण के लिए, बजाय ऐसा करने का लिए:क्या मुझे अपनी utilities.pl को utilities.pm मॉड्यूल में बदलना चाहिए?

do '../dbi_utilities.pl'; 
our ($db,$user,$pw,$attr); 
my $Data = DBI->connect($db,$user,$pw,$attr) or die "Could not connect to database: $DBI::errstr"; 

मैं सिर्फ इस ?:

use AppUtil; 
my $Data = AppUtil->connect(); 

पेशेवरों और प्रत्येक शैली की विपक्ष क्या हैं नहीं कर सकते हैं?

उत्तर

8

ऐसा करने का एकमात्र कारण समय नहीं है।

यही है, इसमें आपके इंटरफ़ेस को साफ करने के साथ-साथ सभी कॉलिंग ऐप्स को नए इंटरफ़ेस का उपयोग करने में समय लगेगा।

जब आप उचित परीक्षण ("परीक्षण करें" या "./build test" या बस "साबित करें ...") का उपयोग शुरू करते हैं, तो अब समय में आपको क्या खर्च आएगा, और यह सक्षम हो जाएगा जांचें कि आपके परिवर्तन इसे जांचने से पहले कुछ भी नहीं तोड़ेंगे। इसलिए, हर तरह से, कन्वर्ट करें। बस जागरूक रहें कि यह मुफ़्त लाभ नहीं है।

2

इससे बाहर मॉड्यूल बनाना इसे और अधिक मजबूत बना देगा। अभी बहुत सी चीजें अनौपचारिक रूप से एक दूसरे पर निर्भर करती हैं, लेकिन उन निर्भरताओं को तुरंत स्पष्ट नहीं किया जाता है।

इसके अलावा, यह आपको उपयोगिता का केवल एक हिस्सा आयात करने में सक्षम बनाता है।

6

ऐसा करने के साथ(), आप प्रत्येक बार utilities.pl फ़ाइल लोड और संकलित कर रहे हैं, जो समस्याएं पैदा कर सकता है यदि आप इसे एक से अधिक बार करते हैं। इसके अलावा, use संकलन पर किया जाता है जो आपके प्रोग्राम को जल्द से जल्द विफल होने की अनुमति देगा, या यहां तक ​​कि perl -wc के साथ भी परीक्षण किया जाएगा।

आखिरकार, इसे एक पैकेज में रखते हुए आप इसे अपने नामस्थान की रक्षा करने की अनुमति देते हैं, जो आपकी परियोजना के बढ़ने में मददगार हो सकता है।

मैं आपकी उपयोगिता को एक उचित पर्ल पैकेज में बदलने के लिए दृढ़ता से सलाह देता हूं जो use से भरा हुआ है।

1

आपको सभी शानदार मॉड्यूल सामान, encapsulation, मॉड्यूल विशिष्ट कार्यों, और इतने पर मिलता है।

हालांकि, अपने वाक्यविन्यास के साथ use का उपयोग करके नोटिस करें। नामस्थान के लिए एक ऑब्जेक्ट बनाना, और कनेक्ट सबराउटिन को कॉल करना। आपकी उपयोगिता के लिए।

इसके अलावा आपके पास 1 होना चाहिए; आपकी फाइल के अंत में।


चिपका अन्य विधि के साथ मतलब है कि आप किसी भी कोड बदलने की जरूरत नहीं है, तो आप अंत में 1 जोड़ने के लिए नहीं है।

सभी "करें", "उपयोग", और "आवश्यकता" आयात आयात करते हैं, लेकिन उनके भीतर मौजूद स्कोप कोड (नामित subroutines को छोड़कर वे छिपा नहीं सकते हैं)।

+0

मॉड्यूल में कुछ बनाना आपको जादूगर रूप से कोई विशेष सुविधा नहीं देता है।आपको इसे सही तरीके से कोड करना होगा। यह भी ध्यान रखें कि * स्वचालित रूप से * आयात नहीं करते हैं। –

+0

@brian: आपका अधिकार। कार्यक्षमता में कोड करने के लिए यह प्रोग्रामर है। –

7

उचित कोड के साथ मॉड्यूल में अपना कोड बनाकर, आप परीक्षण करना आसान बनाते हैं। मैं इसके बारे में "Scripts as Modules" लेख पर पर्ल जर्नल के साथ-साथ "How a Script Becomes a Module" पर परमोनक्स पर बात करता हूं।

शुभकामनाएं,

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

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