रिफैक्टरिंग मैं PRISM/MVVM/WPF एप्लिकेशन लिख रहा हूं। यह एक LOB आवेदन है, इसलिए बहुत सारे जटिल नियम हैं। मैंने देखा है कि व्यू मॉडल फूला हुआ शुरू हो रहा है। दो मुख्य मुद्दे हैं।ब्लोएटेड व्यू मॉडेल
एक यह है कि एमवीवीएम को बनाए रखने के लिए, मैं बहुत सी चीजें कर रहा हूं जो मेरे वीएम में गुणों का एक गुच्छा जोड़ने जैसे हैकी महसूस करते हैं। व्यू विशिष्ट जानकारी जैसे कैसा लगता है, इसका ट्रैक रखने के लिए दृश्य उन गुणों से जुड़ा हुआ है। उदाहरण के लिए, एक बूलियन वीएम में लंबी चल रही प्रक्रिया की स्थिति का ट्रैक रखता है, इसलिए दृश्य लंबे समय तक चल रही प्रक्रिया के दौरान अपने कुछ नियंत्रण अक्षम कर सकता है। मैंने पढ़ा है कि इस मुद्दे को संलग्न व्यवहार के साथ हल किया जा सकता है। मैं उसमें और अधिक देख लूंगा। उदाहरण में एमवीवीएम ऐप्स जो आप ऑनलाइन देखते हैं, यह एक बड़ा सौदा नहीं है क्योंकि वे अधिक सरल हैं।
अन्य समस्या मेरे वीएम में कमांड की संख्या है। अभी चार आदेश हैं। मैं जोश स्मिथ के रिले कॉमांड (मूल रूप से PRISM में प्रतिनिधिमंडल) का उपयोग कर वीएम में आदेशों को परिभाषित कर रहा हूं, इसलिए सभी व्यावसायिक तर्क वीएम में रहते हैं। मैंने प्रत्येक कमांड को कामों की अलग इकाई में ले जाने पर विचार किया। मुझे यकीन नहीं है कि ऐसा करने का सबसे अच्छा तरीका है।
क्या आप अपने वीएम को साफ रखने के लिए उपयोग कर रहे हैं पैटर्न? मैं पहले से ही किसी को "आपका विचार और वीएम बहुत जटिल है, जवाब दे रहा हूं, आपको उन्हें कई दृश्य/वीएम में तोड़ना चाहिए"। यह निश्चित रूप से यूएक्स परिप्रेक्ष्य से बहुत जटिल नहीं है - इसमें 2 बटन, एक combobox, और एक सूची बॉक्स हैं। इसके अलावा, एक तार्किक परिप्रेक्ष्य से, यह एक समेकित डोमेन है। ऐसा कहकर, मुझे यह जानने में बहुत दिलचस्पी है कि अन्य इस तरह के मुद्दे से कैसे निपट रहे हैं।
आपके इनपुट के लिए धन्यवाद।
बेवकूफ टिप्पणी, लेकिन मैं विरोध नहीं कर सकता: "ब्लोट के साथ क्या गलत है"? यह जीवन का एक तरीका है, सॉफ्टवेयर विकास का एक तरीका ;-) –
महान प्रश्न। एमवीवीएम ठीक से करने की कोशिश करते समय डब्ल्यूपीएफ में चारों ओर सीमाएं प्राप्त करने के लिए मेरा डब्ल्यूपीएफ व्यूमोडेल हैक्स से भरा है। WinForms एमवीपी ऐप में इनमें से अधिकतर चीजें तुच्छ हैं। – Damien
आप एमवीपीवीएम देख सकते हैं। यह अनिवार्य रूप से वीएम को विभाजित करता है ताकि वीएम सिर्फ डेटा बाध्यकारी से संबंधित हो और प्रस्तुतकर्ता कमांड को संभालता है। मुझे यह पसंद नहीं है कि आप बाध्यकारी कमांड की सुविधा कैसे खो देते हैं लेकिन यह एक क्लीनर वीएम के लिए बनाता है। – bygrace