2010-09-28 10 views
22

मैं अपने पहले असली एएसपी.नेट एमवीसी प्रोजेक्ट पर काम कर रहा हूं और मैंने देखा है कि जिस नियंत्रक में मैं काम कर रहा हूं वह काफी बड़ा हो रहा है। यह प्रतीत होता है कि आपके नियंत्रकों को पतला रखने के सर्वोत्तम अभ्यास के खिलाफ चला जाता है।नियंत्रक को पतला रखना (बहुत अधिक क्रिया विधियां)

मैंने व्यवसाय तर्क को नियंत्रकों से बाहर रखने के लिए एक अच्छी नौकरी की है। मैं इसके लिए एक अलग परत का उपयोग करें। प्रत्येक क्रिया मुख्य रूप से व्यापार परत में एक विधि को कॉल करती है और मॉडलस्टेट मान्य है या नहीं, इस आधार पर अंतिम परिणाम का समन्वय करता है।

उस ने कहा, नियंत्रक की बड़ी संख्या में कार्यवाही विधियां हैं। सहजता से, मैं नियंत्रक को उप-नियंत्रकों में तोड़ना चाहता हूं लेकिन मुझे ऐसा करने का एक आसान तरीका नहीं दिख रहा है। मैं बस नियंत्रक को अलग नियंत्रकों में तोड़ सकता था लेकिन मैंने पदानुक्रम खोला और यह थोड़ा गंदा लगता है।

क्या बड़ी संख्या में पतली कार्रवाइयों के साथ नियंत्रक को दोबारा जरूरी है? यदि हां, तो ऐसा करने का सबसे अच्छा तरीका क्या है?

+0

आप अभी भी उप फ़ोल्डर्स में उप नियंत्रकों के साथ-साथ दृश्य – hunter

उत्तर

17

सबसे पहले, जब आप सुनते हैं कि यह एक न्यूनतम करने के लिए नियंत्रक कोड रखना अच्छा है, यह मुख्य रूप प्रत्येक कार्य विधि संभव के रूप में पतली रखने के लिए संदर्भित करता है (दृश्य और ViewModels में, बजाय व्यापार वर्गों में तर्क रखा नहीं।) यह ऐसा लगता है कि आप यह कर रहे हैं, जो महान है।

"बहुत अधिक" क्रिया विधियों के लिए, यह एक निर्णय कॉल है। यह वास्तव में अच्छे संगठन का संकेत हो सकता है, कि आप एक ही चीज़ पर प्रत्येक कार्य फोकस कर रहे हैं। साथ ही, आप विशेष रूप से रेंडरएक्शन के उपयोग के लिए क्रियाओं का उपयोग कर रहे हैं? और, यह केवल आपके समाधान की प्रकृति हो सकती है कि आपके नियंत्रक की थीम से संबंधित कई चीजें हैं।

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

3

अच्छा सवाल।

मेरा मानना ​​है कि आप "पतला" नियंत्रक को अभी भी "विस्तृत" या "लंबा" होना चाहिए, इस पर निर्भर करता है कि आप समानता को कैसे खींचना चाहते हैं। यदि नियंत्रक को तोड़ने का कोई साफ तरीका नहीं है जिसे बहुत सी चीजें करने की ज़रूरत है, तो मुझे नहीं लगता कि यह तब तक एक समस्या है जब तक कि प्रत्येक कार्य विशेष रूप से दृश्य/व्यू मॉडल्स तैयार करने पर केंद्रित न हो और सीमित कोड आकार का हो।

2

आपके पास एक और संरचनात्मक विकल्प है जो क्रियाओं के तार्किक समूहों के लिए आंशिक कक्षाएं पेश कर रहा है। और फ़ाइलों को समूहबद्ध करने के लिए vscommands जैसे कुछ का उपयोग करना।

मुझे संदेह है कि कोई भी जादू की संख्या के साथ आ सकता है जो आपको बताता है कि सामान को तोड़ने और नए नियंत्रकों को पेश करने का अच्छा विचार है, यह वास्तव में आपके डोमेन पर निर्भर करता है।

+8

में विभाजित कर सकते हैं आंशिक कक्षाओं का उपयोग करके मेरी राय में कोड गंध को कवर करने की कोशिश कर रहा है। यदि आप कक्षा को आंशिक रूप से विभाजित करने के लिए पहचान सकते हैं (एसआरपी के माध्यम से), क्यों नहीं चलते और कक्षा को तोड़ते हैं? – Ryan

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