प्रत्येक छोटे चरणों के लिए बूलियन चर बनाएं:
bool step1 = i + u == b || q >= a;
bool step2 = a != b && p.isGood() && group1;
bool step3 = group2 || k.isSomething() || m > n;
if (step3) { doSomething(); }
यह निश्चित रूप से लैक्रिमोलॉजी के जवाब के समान है, प्रत्येक चरण के लिए अलग-अलग नामों को छोड़कर।
यदि आप नाम रखते हैं step1
, step2
और ऐसे step3
तरीकों से जो अच्छी अवधारणा बनाते हैं, तो यह अब तक सबसे सुपाठ्य होना चाहिए। p.isGood()
और k.isSomething()
कभी-कभी उन स्थितियों में लगाया जा सकता है जहां यह आपके मूल कोड में नहीं होगा, इसलिए यह एक विकल्प नहीं होगा यदि वे फ़ंक्शन महंगे हैं या यदि आप इस कोड को बहुत तंग लूप में चला रहे हैं।
दूसरी ओर, आपको प्रदर्शन हिट के बारे में चिंता करने की ज़रूरत नहीं है कि नए चर बनाने से नुकसान हो सकता है; एक अच्छा संकलक उन्हें बाहर अनुकूलित करेगा।
आयत टकराव का पता लगाने के साथ एक उदाहरण (जिसे आप शायद उपरोक्त प्रदर्शन के कारण उपयोग नहीं करेंगे):
if((a.x + a.width >= b.x || b.x + b.width >= a.x)
&& (a.y + a.height >= b.y || b.y + b.width >= a.y)
)
{ collision(); }
बना सकता है:
bool horizMatch = a.x + a.width >= b.x || b.x + b.width >= a.x;
bool vertMatch = a.y + a.height >= b.y || b.y + b.width >= a.y;
if(horizMatch && vertMatch) { collision(); }
इसके अलावा, यदि आप अपना कोड छोड़ना चाहते हैं, तो मुझे लगता है कि यह पूरी तरह से ठीक भी होगा। मुझे ईमानदारी से लगता है कि आपका कोड काफी सुपाठ्य है। जाहिर है मुझे नहीं पता कि वास्तव a b x y i u p k m n
में क्या हैं, लेकिन जहां तक संरचना जाती है, यह मुझे अच्छा लगता है।