आप सहकर्मी वास्तव में अनुबंध द्वारा डिजाइन लागू करने का प्रयास कर रहे हैं में एफिल भाषा से (डीबीसी) हैं और पुस्तक के आधार पर: ऑब्जेक्ट ओरिएंटेड सॉफ्टवेयर कंस्ट्रक्शन, 2 डी संस्करण।
मुखरता, जैसा कि उन्होंने इसका इस्तेमाल किया, होरे लॉजिक या होरे ट्रिपल का {P} -पार्टर: {P} C {Q} होगा, जहां {P} प्रीकॉन्डिशन एसर (आयन) s और {Q} हैं स्थिति के बाद मुखर (आयन) एस।
मैं PHP वाले बग्स में मुखर सुविधा के बारे में दी गई सलाह पर ध्यान देना चाहूंगा। आप छोटी गाड़ी कोड का उपयोग नहीं करना चाहते हैं। क्या आप वास्तव में चाहते हैं कि मुखर में बग को ठीक करने के लिए PHP के निर्माता हैं। जब तक वे ऐसा नहीं करते हैं, तब तक आप मुखर का उपयोग कर सकते हैं, लेकिन इसके वर्तमान छोटी अवस्था में इसका उपयोग कर सकते हैं।
इसके अलावा, यदि मुखर सुविधा छोटी गाड़ी है, तो मेरा सुझाव है कि आप इसे उत्पादन कोड में उपयोग न करें। फिर भी, मैं अनुशंसा करता हूं कि आप इसे विकास और परीक्षण कोड में उपयोग करें जहां उपयुक्त हो।
अंत में - यदि आप अनुबंध द्वारा डिजाइन का एक अध्ययन करते हैं, तो आप पाएंगे कि ऑब्जेक्ट-ओरिएंटेड क्लासिकल इनहेरिटेंस के प्रकाश में बूलियन कथनों का उपयोग करने के परिणाम हैं - अर्थात् - आपको किसी पूर्व शर्त को कमजोर नहीं करना चाहिए, और न ही बाद की स्थिति को कमजोर करना चाहिए। ऐसा करना आपके बहुरूपी वंशजों के लिए खतरनाक हो सकता है जो आपस में बातचीत कर रहे हैं। जब तक आप समझते हैं कि इसका क्या मतलब है-मैं इसे अकेला छोड़ दूँगा!
इसके अलावा-मैं अत्यधिक अनुशंसा करता हूं कि PHP के निर्माता अनुबंध द्वारा डिजाइन का एक व्यापक अध्ययन करें और इसे PHP ASAP में डालने का प्रयास करें! तब हम सभी को एक DbC- जागरूक संकलक / दुभाषिया होने से लाभ हो सकता है, जो उत्तर में दिए गए मुद्दों को संभालेंगे (ऊपर):
- एक उचित रूप से लागू किया गया डिज़ाइन-बाय-कॉन्ट्रैक्ट-अवेयर कंपाइलर (उम्मीद है) बग-मुक्त (वर्तमान पीएचपी मुखर के विपरीत) होगा।
- एक उचित रूप से लागू किया गया डिज़ाइन-बाय-कॉन्ट्रैक्ट-अवेयर कंपाइलर इस मामले पर आपके दिमाग को रैक करने के बजाय आपके लिए बहुरूपी अभिकथन तर्क प्रबंधन की बारीकियों को हैंडल करेगा!
नोट: यहां तक कि आपके एक का उपयोग if
मुखर (पूर्व शर्त) के विकल्प के रूप में -statement के लिए एक पूर्व शर्त को मजबूत करने या एक पोस्ट-स्थिति को कमजोर करने के लिए उपयोग किए जाने पर गंभीर परिणाम भुगतने होंगे। यह समझने के लिए कि इसका क्या मतलब है, आपको पता करने के लिए अनुबंध द्वारा डिजाइन का अध्ययन करना होगा! :-)
हैप्पी अध्ययन और सीखने।
'isset
(कोड लाइन के साथassert
)? सिर्फisset
(एकल उद्धरण के बिना'
) नहीं?