मैं ऐसा करने के लिए एक अच्छा तरीका खोजने के लिए संघर्ष कर रहा हूं, इसलिए मैं सिर्फ एक विचार (चांदी की गोली नहीं, क्योंकि यह मुख्य रूप से स्वाद का मामला है) के साथ आया था।
if bool(condition1 and
condition2 and
...
conditionN):
foo()
bar()
मैंने इस समाधान में कुछ योग्यताएं देखी हैं, जो मैंने देखी हैं, अर्थात्, आपको इंडेंटेशन (बूल) के अतिरिक्त 4 स्थान मिलते हैं, जिससे सभी स्थितियों को लंबवत रूप से रेखाबद्ध करने की अनुमति मिलती है, और यदि कथन में शरीर का इंडेंट किया जा सकता है एक स्पष्ट (ईश) रास्ता। यह बूलियन ऑपरेटरों के शॉर्ट-सर्किट मूल्यांकन का लाभ भी रखता है, लेकिन निश्चित रूप से एक फ़ंक्शन कॉल के ओवरहेड को जोड़ता है जो मूल रूप से कुछ भी नहीं करता है। आप तर्क कर सकते हैं (वैध रूप से) कि इसके तर्क को वापस करने वाले किसी भी फ़ंक्शन को बूल के बजाय यहां इस्तेमाल किया जा सकता है, लेकिन जैसा मैंने कहा, यह सिर्फ एक विचार है और यह अंततः स्वाद का मामला है।
काफी मजेदार, जैसा कि मैं यह लिख रहा था और "समस्या" के बारे में सोच रहा था, मैं अभी तक एक और विचार के साथ आया था, जो एक फ़ंक्शन कॉल के ओवरहेड को हटा देता है। यह क्यों नहीं दर्शाया गया है कि हम कोष्ठक के अतिरिक्त जोड़े का उपयोग करके एक जटिल स्थिति में प्रवेश करने वाले हैं? यदि कथन के शरीर के सापेक्ष उप-स्थितियों का एक अच्छा 2 स्थान इंडेंट देने के लिए, 2 और कहें। उदाहरण:
if (((foo and
bar and
frob and
ninja_bear))):
do_stuff()
मुझे यह पसंद है क्योंकि जब आप इसे देखते हैं, तो आपके सिर में एक घंटी तुरंत बजती है "अरे, यहाँ एक जटिल चीज चल रही है!" । हां, मुझे पता है कि कोष्ठक पठनीयता में मदद नहीं करते हैं, लेकिन इन स्थितियों को शायद ही कभी पर्याप्त रूप से प्रकट होना चाहिए, और जब वे दिखाई देते हैं, तो आपको वैसे भी उन्हें रोकना और पढ़ना होगा (क्योंकि वे जटिल हैं )।
वैसे भी, दो और प्रस्ताव जो मैंने यहां नहीं देखे हैं। आशा है कि यह किसी की मदद करता है :)
pep8
pep8