जीयूआई कोड के बारे में याद रखने वाली बात यह है कि यह ईवेंट-चालित है, और ईवेंट-चालित कोड में हमेशा यादृच्छिक रूप से व्यवस्थित ईवेंट हैंडलर्स के द्रव्यमान की उपस्थिति होती है। जहां यह वास्तव में गड़बड़ हो जाता है जब आप गैर-घटना-संचालित कोड को कक्षा में जूता करने की कोशिश करते हैं। निश्चित रूप से, इसमें ईवेंट हैंडलर के लिए सहायता प्रदान करने की उपस्थिति है और आप अपने ईवेंट हैंडलर को अच्छा और छोटा रख सकते हैं, लेकिन यह सभी अतिरिक्त सपोर्ट कोड तैरते रहते हैं जिससे आपका GUI स्रोत फूला हुआ और गन्दा लगता है।
तो आप इस बारे में क्या कर सकते हैं, और आप चीजों को कैसे रिफलेक्टर करना आसान बना सकते हैं? ठीक है, मैं सबसे पहले मैं कुछ करने से इनकार करने की अपनी परिभाषा को बदल दूंगा, जो मैं अपने कोड के रूप में निरंतर कुछ करता हूं। क्यों? क्योंकि आप चाहते हैं कि आप अपने कोड को और अधिक आसानी से संशोधित कर सकें, न कि दूसरे तरीके से। मैं यहाँ केवल आपको शब्दार्थ बदलने के लिए नहीं कह रहा हूँ, बल्कि आपके कोड को अलग तरह से देखने के लिए आपको थोड़ा मानसिक कैलीसिंथिक्स करने के लिए कह रहा हूँ।
मुझे जो तीन रिफैक्टरिंग तकनीकें मिलीं , उनमें मुझे सबसे ज्यादा इस्तेमाल होने वाले नाम हैं , रीनेम , एक्सट्रैक्ट मेथड और एक्सट्रैक्ट क्लास । अगर मैंने कभी भी एक दूसरे को रिफैक्टरिंग नहीं सीखा, तो वे तीनों मुझे अभी भी अपने कोड को साफ और अच्छी तरह से संरचित करने में सक्षम बनाएंगे, और आपके प्रश्न की सामग्री से, यह मुझे ऐसा लगता है जैसे आप शायद खुद को उन तीन रिफ्लेक्टरिंग का उपयोग करते हुए पाएंगे। अपने GUI कोड को पतला और साफ रखने के लिए आदेश दें।
आपके पास दुनिया में GUI और बिजनेस लॉजिक का सबसे अच्छा संभव अलगाव हो सकता है, और फिर भी GUI कोड ऐसा लग सकता है जैसे इसके बीच में एक कोड माइन में विस्फोट हुआ हो। मेरी सलाह यह है कि अपने GUI को ठीक से प्रबंधित करने में आपकी मदद करने के लिए एक अतिरिक्त कक्षा या दो होने का दुख नहीं है, और यह जरूरी नहीं है कि यदि आप MVC पैटर्न लागू कर रहे हैं, तो यह आपकी व्यू क्लास हो - हालाँकि अक्सर आपको मिल जाएगी मध्यस्थ कक्षाएं आपके विचार के समान हैं कि आप अक्सर उन्हें सुविधा के लिए विलय करने का आग्रह करेंगे। इस पर मेरा मानना है कि दृश्य तर्क के सभी को प्रबंधित करने के लिए एक अतिरिक्त जीयूआई-विशिष्ट परत को जोड़ने के लिए वास्तव में चोट नहीं पहुंचती है, हालांकि आप शायद ऐसा करने के लाभों और लागतों को तौलना चाहते हैं।
इसलिए मेरी सलाह है:
- सीधे अपने GUI के पीछे कुछ भी न करें सिवाय इसके कि आप यह देखें और कैसे परिभाषित करें कि GUI दृश्य (या एक मध्यस्थ परत) में कैसे झुकेगा।
- जब तक वह ऐसा करने के लिए आपके लिए समझ में न आए, तब तक हर दृश्य से संबंधित चीज़ को एक ही वर्ग - या यहां तक कि प्रति GUI विंडो में एक-एक करके जूता-हॉर्न करने की कोशिश न करें। आपका विकल्प अपने GUI तर्क को प्रबंधित करने के लिए कक्षाओं को प्रबंधित करने के लिए बहुत कम और आसान बनाना है।
- जब आपके तरीके कोड की 4-5 लाइनों की तुलना में थोड़े बड़े दिखाई देने लगे हैं, तो जांच लें कि क्या यह आवश्यक है और यदि एक विधि या दो को निकालना संभव है, तो आप अपने तरीकों को दुबला रख सकते हैं, भले ही इसका मतलब एक वर्ग हो कई और तरीकों के साथ।
- यदि आपकी कक्षाएं वास्तव में बड़ी लगने लगी हैं, तो सभी डुप्लिकेट की गई कार्यक्षमता को हटाकर शुरू करें, और फिर देखें कि क्या आप तार्किक रूप से अपने तरीकों को समूह बना सकते हैं जैसे कि आप किसी अन्य वर्ग या दो को निकाल सकते हैं।
- हर बार जब आप कोड की एक पंक्ति लिखते हैं, तो उसे फिर से तैयार करने के बारे में सोचें। यदि आपको काम करने के लिए कोड की एक पंक्ति मिलती है, तो देखें कि क्या आप इसे दोहराए कार्यक्षमता से बचने के लिए, या व्यवहार को बदलने के बिना इसे थोड़ा दुबला बनाने के लिए इसे फिर से कायम कर सकते हैं।
- अपरिहार्य स्वीकार करें, कि आप हमेशा महसूस करेंगे कि आपके सिस्टम में एक हिस्सा या कोई अन्य थोड़ा फूला हुआ महसूस करना शुरू कर देगा, खासकर अगर आप जाते समय रिफैक्टिंग की उपेक्षा करते हैं। यहां तक कि एक अच्छी तरह से फैक्टर कोड आधार के साथ, आप अभी भी महसूस कर सकते हैं जैसे कि अधिक है जो आप कर सकते हैं। यह सॉफ्टवेयर लिखने की वास्तविकता है, कि आप खुद को हमेशा महसूस करेंगे कि कुछ और "बेहतर" हो सकता है, इसलिए आपको एक पेशेवर काम करने और सोने की प्लेटिंग के बीच संतुलन बनाने की जरूरत है।
- स्वीकार करें कि आप जिस क्लीनर की कोशिश करते हैं और अपना कोड रखते हैं, आपका कोड जितना कम फूला हुआ होगा उतना ही कम लगेगा।