मैं आमतौर पर इस समस्या के साथ कई चरणों से गुजरता हूं, जब यह पता लगाना बंद हो जाता है कि आगे कैसे जाना है।
सबसे पहले, आपने जो किया है। DRY के साथ मेहनत करो। यदि आप एक बड़े बालों वाली गंदगी के साथ समाप्त नहीं होते हैं, तो आप कर रहे हैं। यदि, आपके मामले में, आपके पास कोई डुप्लिकेट कोड नहीं है, लेकिन प्रत्येक बूलियन का मूल्य 20 अलग-अलग स्थानों पर चेक किया गया है, तो अगले चरण पर जाएं।
दूसरा, कोड को ब्लॉक में विभाजित करें। बूलियंस प्रत्येक को केवल एक बार संदर्भित किया जाता है (ठीक है, शायद दो बार कभी-कभी) सीधे ब्लॉक में निष्पादन के लिए। दो बूलियन के साथ, आप चार ब्लॉकों के साथ समाप्त होते हैं। प्रत्येक ब्लॉक लगभग समान है। DRY चला गया है। प्रत्येक ब्लॉक को एक अलग विधि न बनाएं। यह अधिक सुरुचिपूर्ण होगा, लेकिन सभी कोड को एक ही विधि में रखना आसान बना देता है, या यहां तक कि संभव है कि कोई भी रखरखाव करने के लिए यह देख सके कि उन्हें चार स्थानों पर प्रत्येक परिवर्तन करना है। अच्छी तरह से संगठित कोड और एक लंबा मॉनिटर के साथ, मतभेद और गलतियां लगभग स्पष्ट होंगी। अब आपके पास रखरखाव योग्य कोड है और यह मूल पेचीदा गड़बड़ की तुलना में तेजी से चलेगा।
तीसरा, अपने प्रत्येक ब्लॉक से कोड की डुप्लिकेट लाइनों को खींचने और उन्हें अच्छे, सरल तरीकों से बनाने की कोशिश करें। कभी-कभी आप कुछ नहीं कर सकते। कभी-कभी आप बहुत कुछ नहीं कर सकते। लेकिन आप जो भी थोड़ा-बहुत करते हैं वह आपको DRY की ओर वापस ले जाता है और कोड को बनाए रखना और सुरक्षित रखना आसान बनाता है। आदर्श रूप से, आपकी मूल विधि कोई डुप्लिकेट कोड नहीं हो सकती है। उस बिंदु पर, आप इसे बूलियन मापदंडों के बिना कई तरीकों में विभाजित करना चाह सकते हैं या आप नहीं कर सकते हैं। कॉलिंग कोड की सुविधा अब मुख्य चिंता का विषय है।
मैंने दूसरे चरण के कारण पहले ही बड़ी संख्या में अपना उत्तर यहां जोड़ दिया। मुझे डुप्लिकेट कोड से नफरत है, लेकिन अगर यह किसी समस्या को हल करने का एकमात्र समझदार तरीका है, तो इसे इस तरह से करें कि किसी को भी एक नज़र में पता चल जाए कि आप क्या कर रहे हैं। कई ब्लॉक और केवल एक विधि का उपयोग करें। ब्लाकों को यथासंभव नाम, रिक्ति, संरेखण, ... सब कुछ समान बनाएं। तब मतभेद पाठक पर उछलने चाहिए। यह स्पष्ट कर सकता है कि इसे DRY तरीके से कैसे फिर से लिखना है, और यदि नहीं, तो इसे बनाए रखना यथोचित सरल होगा।
createTrajectory...
कार्यों को कहते हैं?