2016-04-04 7 views
6

में उचित कक्षा तात्कालिकता सी #/डब्ल्यूपीएफ/एमवीवीएम डेवलपर के रूप में पिछले दो वर्षों में खर्च करने के बाद, मैंने हाल ही में एक नई कंपनी में एक वीबी/विनफॉर्म प्रोजेक्ट लिया।सी # और विनफॉर्म

मैंने सफलतापूर्वक परियोजना को सी # में परिवर्तित कर दिया है। मैं इस परियोजना के लिए सर्वोत्तम तरीकों का पता लगाने की कोशिश कर रहा हूं, लेकिन मैं यह पता लगाने की कोशिश कर रहा हूं कि वास्तव में कितना रिफैक्टरिंग और पुनः कॉन्फ़िगर करना है।

मेरा मुद्दा यह है: पिछले डेवलपर ने दो विशाल स्थैतिक वर्ग बनाए। 30+ रूप हैं जिनका उपयोग विभिन्न कार्यों के लिए किया जाता है। प्रत्येक फॉर्म को बटन द्वारा संचालित एक ईवेंट से "मुख्य मेनू" प्रकार के स्क्रीन पर क्लिक किया जाता है। जब कार्यक्रम शुरू होता है, तो इन मेगा-क्लास में से किसी एक कार्य को बुलाया जाता है जो प्रत्येक रूप को तत्काल बनाता है। स्थिरता और स्थिरांक की अविश्वसनीय संख्या भी है।

मैंने स्थिरांक को तोड़ दिया है और उनके लिए एक विशिष्ट वर्ग बनाया है। मैं मेगा-क्लास को छोटे, अधिक प्रबंधनीय (और जिम्मेदारी विशिष्ट) वर्गों में अलग कर रहा हूं, लेकिन मुझे यह अविश्वसनीय रूप से बड़ा प्रारंभिक कार्य मिल गया है जो इन सभी रूपों को तुरंत चालू करता है।

इस प्रकार, मेरे प्रश्न (आखिरकार) ये हैं: क्या मैंने संसाधन दुःस्वप्न के ऊपर लिखा है? या, क्या यह किसी प्रकार का सामान्य वीबी/विनफॉर्म डिज़ाइन पैटर्न है जिसे मुझे रखना चाहिए? क्या मुझे इसे फिर से लिखना चाहिए ताकि प्रत्येक फॉर्म/क्लास को तत्काल बनाया जा सके जब उस फॉर्म को कॉल करने वाले बटन पर क्लिक किया जाता है, तो यह बंद होने पर निपटान किया जा सकता है?

किसी भी दिशा के लिए धन्यवाद जो आप मुझे दे सकते हैं। अगर मैं इसे और अधिक विशिष्ट बनाने के लिए अधिक जानकारी प्रदान कर सकता हूं, तो कृपया टिप्पणी करें और मैं संपादित करूंगा।

+3

धन्यवाद भगवान इस देव को बदल दिया गया है। – Phiter

+1

बस मुझे खराब डिजाइन की तरह लगता है। मैं एक समय में कुछ रूपों को तुरंत समझ सकता हूं, लेकिन हर रूप में नहीं। उन्हें केवल तत्काल होना चाहिए जब वे आईएमओ का उपयोग करने के लिए तैयार हों।जब तक आप लॉगिन फॉर्म पूरा होने के बाद दिखाए जाने वाले मुख्य फॉर्म को तैयार नहीं कर लेते हैं। फिर भी, मैं अभी भी ऐसा नहीं करता हूं। तो, हाँ, इसे अपना रास्ता लिखें और केवल आवश्यकतानुसार तत्काल करें। यह बहुत बेहतर है। – ManoDestra

+1

अंगूठे का नियम है (आप इसे डीबी कनेक्शन के बारे में बहुत कुछ सुनेंगे, लेकिन यह वास्तव में लगभग सभी कक्षाओं पर लागू होता है) जितनी जल्दी हो सके तत्काल, जितनी जल्दी हो सके निपटान करें। यह सुनिश्चित करता है कि जीसी आपके ऑब्जेक्ट को कुशलता से अंतिम रूप दे सकता है। दीर्घकालिक वस्तुओं जीसी अंतिमकरण के बाद के दौर में गिरावट जो काफी समय ले सकती है। – Kevin

उत्तर

4

क्या मैंने संसाधन संसाधन दुःस्वप्न के ऊपर लिखा है?

हाँ

या, यह सामान्य वीबी/Winform डिजाइन पैटर्न है कि मैं रखना चाहिए के कुछ प्रकार है?

बिलकुल नहीं। सिस्टम का डिज़ाइन वीबी और सी # में काफी समान है। कुछ बहुत मामूली अपवादों के साथ भाषाओं के बीच अंतर सिर्फ वाक्यविन्यास है।

मैं इस फिर से लिखना चाहिए ताकि प्रत्येक प्रपत्र/वर्ग, जब उस प्रपत्र बुला बटन क्लिक instantiated है तो यह जब बंद कर दिया का निपटारा कर सकते हैं?

सिद्धांत में हाँ। फॉर्मों को उतना ही काम करना चाहिए जितना कि यदि आप सी # में लिख रहे थे। बेशक अगर मूल देव को वैश्विक राज्य पसंद आया तो फॉर्म के एक रूप और अगले के बीच राज्य के सभी प्रकार के छिपे हुए राज्य हो सकते हैं।

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

+0

मैं आपकी प्रतिक्रिया की सराहना करता हूं, साथ ही उपरोक्त टिप्पणियों की सराहना करता हूं। यह थोड़ा सा पागल हो रहा है, लेकिन कम से कम इसके परिणामस्वरूप मुझे कुछ बेहतर मिलेगा! – Kiel

संबंधित मुद्दे