समस्या के डिजाइन unless पर्ल में

में पर्ल प्रोग्रामिंग भाषा के रूप में, कई अन्य प्रोग्रामिंग भाषाओं डिजाइन if:

▶ Run
#!/usr/bin/perl

my $value;

if (!defined $value) {
    print 'value must be defined';
}

शरीर if किया जाता है अगर हालत सच रिटर्न ।

लेकिन, इसके अलावा में करने के लिए डिजाइन if भी एक रिवर्स डिजाइन unless. शरीर unlessरन अगर हालत गलत देता है । यहाँ कोड है कि वास्तव में काम करता है के रूप में एक ही पिछले एक, लेकिन का उपयोग कर लिखा unless:

▶ Run
#!/usr/bin/perl

my $value;

unless (defined $value) {
    print 'value must be defined';
}

यदि आप इन दो उदाहरणों में, हम देखते हैं कि जब का उपयोग कर unless , कोड का उपयोग करता है कम संरचनाओं (नहीं है लिखने के लिए !) है, लेकिन कोड की तुलना में अब है 3 अक्षर.

इसके अलावा मैं और अधिक मुद्रित करने के लिए, जब आप का उपयोग unless हो सकता है एक समस्या है. कल्पना कीजिए कि हम की जरूरत पूरक करने के लिए हमारे कोड के साथ unless. अब वह करता है कुछ कार्रवाई जब एक चर $value है undef. क्या इस कार्य को करने के लिए एक कार्रवाई में मामले के एक रिवर्स स्थिति — जब $value है, लेकिन कुछ भी undef. काफी प्राकृतिक प्रतिक्रिया इस स्थिति में जोड़ने के लिए है elseयूनिट:

▶ Run
#!/usr/bin/perl

my $value;

unless (defined $value) {
    print 'value must be defined';
} else {
    print 'value is defined';
}

यह बाहर कर दिया काम के कोड है और इस कोड लिखने के लिए आसान है, लेकिन यह निकला बुरा कोड. इस कोड को ठीक करने के लिए मुश्किल है और समझ. इसके बजाय, कोड होता है, सीधे लिखने के लिए:

▶ Run
#!/usr/bin/perl

my $value;

if (defined $value) {
    print 'value is defined';
} else {
    print 'value must be defined';
}

दुर्भाग्य से, यदि मूल कोड का उपयोग करता है unlessहै, तो वहाँ है एक महान प्रलोभन करने के लिए नहीं करने के लिए इसे बदल if, और सिर्फ लिखने else. लेकिन यह पता चला है बुरा कोड.

यह माना जाता है कि लिखने के लिए की क्षमता unless-else आम तौर पर एक गलती की भाषा में डिजाइन. और इस तरह के डिजाइन विफल करना चाहिए, के बजाय काम कर रहा है ।

unless, के रूप में अच्छी तरह के रूप में if में इस्तेमाल किया जा सकता पोस्टफिक्स फार्म:

▶ Run
#!/usr/bin/perl

my $value;

print 'value must be defined' unless defined $value;

जब आप का उपयोग पोस्टफिक्स संकेतन unless समस्याओं unless-else घटित नहीं करता है, के रूप में इस संस्करण else आम तौर पर कहीं नहीं करने के लिए दर्ज करें ।

कुल सिफारिश. कभी नहीं का उपयोग करें डिजाइन unless ( $bool ) { ... }, के रूप में यह की ओर जाता है की गिरावट के लिए पठनीयता के लिए कोड. के उपयोग के बारे में unless के एक संस्करण है पोस्टफिक्स के इस सख्त सिफारिश नहीं । का उपयोग करने के लिए है या नहीं पोस्टफिक्स unless की बात है कि समझौते में टीम और स्वाद की बात है । लेखक कभी नहीं पसंद है का उपयोग नहीं करते unless.

अन्य लेख