2011-10-22 11 views
5

मैं कहां से काम करते हैं, मैं देख रहा हूँ बहुत कुछ के PL/SQL में लिखे कोड के निम्नलिखित प्रकार की,PL/SQL में अगर ब्लॉक के अजीब कोडिंग शैली

IF a>b THEN 
    NULL; 
ELSE 
    c:=a*b; 
END IF; 

मैं इस अजीब लगता है क्योंकि एक सी बराबर कैसा लगेगा इस,

if (a>b) 
{ 

} 
else 
{ 
    c=a*b; 
} 

और कोड के ऊपर प्रकार एक सी मंच है कि मैं जानता हूँ कि जब newbies के द्वारा पोस्ट में के रूप में बुरा शैली पर सिकोड़ी किया गया है। चूंकि पीएल/एसक्यूएल खाली ब्लॉक की अनुमति नहीं देता है और हमेशा एक पूर्ण कथन की आवश्यकता होती है, क्या इस प्रकार की कोडिंग शैली किसी भी फायदे को लाती है w.r.t पठनीयता या क्या यह वरीयता का मामला है? एफडब्ल्यूआईडब्ल्यू, जो व्यक्ति उपरोक्त शैली के साथ पीएल/एसक्यूएल को कोड करता है वह निश्चित रूप से एक अनुभवी कोडर लगता है। क्या निम्नलिखित के मुकाबले कोई फायदा है?

IF a<=b THEN 
    c:=a*b; 
END IF; 
+0

कोई कार्यात्मक अंतर नहीं है इसलिए यह शुद्ध वरीयता है। –

+0

हो सकता है कि उस खंड में कुछ और हो गया हो जो हटा दिया गया हो। इसे हटाने का यह एक आसान तरीका है। मैं नहीं करता लेकिन यह काम करता है। –

+0

@ ब्रायनरोच: 'ए' या 'बी'' शून्य 'होने पर एक कार्यात्मक अंतर होता है। माप का जवाब देखें। – user272735

उत्तर

9

ऐसा लगता है कि a <= b कोई भी भाग शून्य होने पर सत्य हो। यही कारण है कि ये दो कथन अलग हैं।

पहले मामले में, c = a*b चलाएगा यदि a शून्य है। दूसरे मामले में, यह नहीं होगा। जब तक आप कुछ के लिए पता है कि a और b रिक्त नहीं कर रहे हैं, बराबर बयान के बजाय होगा:

IF a<=b or (a is null) or (b is null) THEN 
    c:=a*b; 
END IF; 
+0

यह सटीक अर्थशास्त्र हो सकता है; यदि हां, तो यह बहुत कम आश्चर्यजनक सिद्धांत का उल्लंघन करता है। पीएलएसक्यूएल और किसी भी कोडर के डिजाइनर दोनों वास्तव में इसका इरादा रखते हैं। कोई भी नौसिखिया (या मेरे जैसे पुराने धुंध) जो यह नहीं जानता है, इस कोड को गलत तरीके से संशोधित करेगा, रखरखाव लागत बढ़ाएगा। –

+0

यह कम से कम आश्चर्य के सिद्धांत का उल्लंघन कैसे करता है? यह उन मामलों में बहुत स्पष्ट है जिनके लिए यह परीक्षण कर रहा है। – eaolson

1

मैं कहां से काम करते हैं, हम, खाली ब्लॉक करने के लिए पसंद नहीं है इसलिए हम हमेशा अपने नीचे के उदाहरण की तरह कोड हमारा, ELSE IF बिना। मुझे लगता है कि यह काफी हद तक वरीयता का मामला है, लेकिन मैं खाली ब्लॉक से बचने के अंत में IF कथन को उलट देता हूं; मुझे कोड पढ़ने के लिए आसान लगता है।

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