कभी-कभी नो-ऑप क्लॉस आपके कोड को अधिक पठनीय बना सकते हैं।
यह एक राय का विषय हो सकता है, लेकिन यहाँ एक उदाहरण है। मान लीजिए कि आपने एक फ़ंक्शन बनाया है जो दो यूनिक्स पथों को ले कर काम करता है। यह एक पथ से दूसरे पथ पर cd के लिए आवश्यक 'परिवर्तन पथ' की गणना करता है। आप अपने फ़ंक्शन पर प्रतिबंध लगाते हैं कि पथ दोनों को '/' से शुरू होना चाहिए या दोनों को नहीं होना चाहिए।
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
true # continue with function
else
return 1 # Skip function.
fi
कुछ डेवलपर्स नो-ऑप को हटाना चाहेंगे लेकिन इसका मतलब सशर्त को नकारना होगा:
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" != / || "$fromC" == / ]] && [[ "$toC" == / || "$fromC" != / ]]
then
return 1 # Skip function.
fi
अब-मेरी राय में-अगर-क्लॉज की शर्तों से ऐसा स्पष्ट नहीं है, जिसमें आप कार्य करना छोड़ना चाहते हैं। नो-ऑप को खत्म करने के लिए और इसे स्पष्ट रूप से करने के लिए, आप फ़ंक्शन से बाहर आई-क्लॉज को स्थानांतरित करना चाहेंगे:
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
cdPath=$(chgPath pathA pathB) # (we moved the conditional outside)
यह बेहतर लग रहा है, लेकिन कई बार हम ऐसा नहीं कर सकते हैं; हम चाहते हैं कि चेक फंक्शन के अंदर किया जाए।
तो ऐसा कितनी बार होता है? अक्सर नहीं। शायद साल में एक या दो बार। यह अक्सर पर्याप्त होता है, कि आपको इसके बारे में पता होना चाहिए। जब मुझे लगता है कि यह मेरे कोड की पठनीयता (भाषा की परवाह किए बिना) को सुधारता है तो मैं इसका इस्तेमाल करने से नहीं कतराता।