फूला हुआ GUI कोड लिखने से कोई कैसे बच सकता है?


48

मुझे लगता है कि जब भी मैं जीयूआई कोड के साथ काम करता हूं, तो कोड तेजी से और फिर अन्य प्रकार के कोड से फूल जाता है। रिफ्लेक्टर करना भी कठिन लगता है। जबकि अन्य प्रकार के कोड में मैं बहुत आसानी से रिफ्लेक्टर कर सकता हूं - मुझे लगता है कि मैं एक बड़े वर्ग को कार्यक्षमता के छोटे टुकड़ों में विघटित कर सकता हूं - अधिकांश जीयूआई फ्रेमवर्क के साथ मैं अक्सर एक रूपरेखा के लिए बाध्य होता हूं जिसके लिए मेरे विजेट / नियंत्रण / जो भी वर्ग की आवश्यकता होती है विजेट / नियंत्रण / जो कुछ भी अधिक सीधे और अधिक चीजों को लागू करें। कभी-कभी ऐसा कुछ आधार विजेट / नियंत्रण / चीज़ या (b) से सुरक्षित विधियों तक पहुँचने की आवश्यकता के कारण होता है।

मुझे आमतौर पर उदाहरण के लिए, संकेतों / घटनाओं के माध्यम से इनपुट की एक बड़ी विविधता का जवाब देना है / जो कुछ भी फ्रेमवर्क से उपयोगकर्ता के साथ बातचीत करने के सभी तरीकों को लागू करना है। विभिन्न प्रकार के इनपुट / आउटपुट को संभालने के लिए मुझे एक GUI विजेट / नियंत्रण की आवश्यकता हो सकती है:

  1. एक राइट क्लिक / संदर्भ मेनू
  2. संदर्भ मेनू से चयनों पर प्रतिक्रिया - जो कई हो सकते हैं
  3. GUI पेंट करने के लिए एक विशेष तरीका
  4. कीबोर्ड इनपुट पर प्रतिक्रिया करें
  5. बटन, चेकबॉक्स,
  6. आदि आदि

... सभी जबकि जीयूआई के तहत कक्षाओं का प्रबंधन व्यापार तर्क का प्रतिनिधित्व करते हैं।

एक सरल सीधे-आगे वाले GUI का कोड बहुत तेज़ी से विकसित हो सकता है, तब भी जब buisiness लॉजिक को अलग करता है और MVC का उपयोग करता है, मुझे लगता है GUI कोड परिवर्तन के लिए एक बड़ा चुंबक है।

क्या जीयूआई कोड को एक तरीके से प्रबंधित करने और इसे टूटी हुई खिड़की बनने देने से बचने का कोई तरीका है? या यादृच्छिक इवेंट हैंडलर / ओवरराइड विधियों का एक समूह वास्तव में सबसे अच्छा है जो हम जीयूआई कोड के लिए कर सकते हैं?


4
"ब्लोट" की आपकी सटीक परिभाषा क्या है?

जवाबों:


36

जीयूआई कोड के बारे में याद रखने वाली बात यह है कि यह ईवेंट-चालित है, और ईवेंट-चालित कोड में हमेशा यादृच्छिक रूप से व्यवस्थित ईवेंट हैंडलर्स के द्रव्यमान की उपस्थिति होती है। जहां यह वास्तव में गड़बड़ हो जाता है जब आप गैर-घटना-संचालित कोड को कक्षा में जूता करने की कोशिश करते हैं। निश्चित रूप से, इसमें ईवेंट हैंडलर के लिए सहायता प्रदान करने की उपस्थिति है और आप अपने ईवेंट हैंडलर को अच्छा और छोटा रख सकते हैं, लेकिन यह सभी अतिरिक्त सपोर्ट कोड तैरते रहते हैं जिससे आपका GUI स्रोत फूला हुआ और गन्दा लगता है।

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

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

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

इसलिए मेरी सलाह है:

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

3
+1 यह पसंद है या नहीं, एक GUI एक zillion विस्तृत संचालन का ख्याल रखता है और इसका मतलब है कि कोड।
पैट्रिक ह्यूजेस

डेवलपर्स को GUI के लिए इवेंट-चालित कोडिंग का उपयोग करना सीखना चाहिए।
डेविड गाओ

23

मुझे लगता है कि आप जिन समस्याओं का सामना कर रहे हैं उनमें से कई का पता एक साधारण कारण से लगाया जा सकता है। अधिकांश डेवलपर्स GUI कोड को 'वास्तविक' कोड की तरह नहीं मानते हैं। मेरे यहाँ कोई सबूत या आँकड़े नहीं हैं, बस मेरी आंत का एहसास है।

शायद उन्हें लगता है कि यह ' सिर्फ प्रस्तुति ' है और महत्वपूर्ण नहीं है। ' वहाँ कोई व्यावसायिक तर्क नहीं है ', वे कहते हैं, ' इकाई इसका परीक्षण क्यों करती है '? जब आप ऑब्जेक्ट ओरिएंटेशन और क्लीन कोड लिखते हैं तो वे हंसते हैं। वे चीजों को बेहतर बनाने की कोशिश भी नहीं करते हैं। शुरू करने के लिए कोई संरचना नहीं है, वे बस कुछ कोड को थप्पड़ मारते हैं और इसे सड़ने देते हैं क्योंकि अन्य समय के साथ अपना स्पर्श जोड़ते हैं। एक सुंदर गड़बड़, भित्तिचित्र कोड।

जीयूआई कोड की अपनी अनूठी चुनौतियां हैं इसलिए उन्हें अलग तरह से और सम्मान के साथ व्यवहार किया जाना चाहिए। इसे प्यार और डेवलपर्स की जरूरत है जो इसे लिखना चाहते हैं । जो इसे पतला रखेंगे और इसे अच्छी संरचना और सही पैटर्न देंगे।


2
GUI कोड की धारणा के लिए अलाउड करने के लिए +1 गैर-गिनी कोड के लिए अलग तरह से व्यवहार किया जा रहा है। मैंने उस समय की संख्या की गिनती खो दी है जब मैंने किसी को यह कहते हुए सुना, "जीयूआई का परीक्षण करने के लिए परेशान मत करो क्योंकि यह प्रभावी लागत नहीं है और इसके अलावा ऐसा करना मुश्किल है"। मैं आमतौर पर "यह मुश्किल है और मैं इसे करने के लिए सीखने के लिए बहुत आलसी हूं!" का अनुवाद करता हूं।
रॉबिंस

1
+1 जहां मैं काम करता हूं हम अक्सर GUI कोड की समीक्षा नहीं करते हैं - "यह सिर्फ GUI है, इसे छोड़ें"। और मैं भी उतना ही दोषी हूं। अजीब बात यह है कि मेरी व्यक्तिगत परियोजनाओं में मैं बहुत समय बिताता हूं अगर अच्छा स्वच्छ जीयूआई कोड प्राप्त करने की कोशिश कर रहा हूं। लगता है यह सिर्फ एक संस्कृति की बात है।
हैप्पीकैट

8

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

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


6

आप मॉडल दृश्य प्रस्तुतकर्ता / निष्क्रिय दृश्य पैटर्न पर एक नज़र डालना चाहते हैं। रे रयान ने Google IO पर GWT के लिए सर्वश्रेष्ठ वास्तुकला प्रथाओं के बारे में एक अच्छी बात की।

http://www.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html

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


1
+1। एमवीपी बिल्कुल अलग-अलग वर्गों में जीयूआई तर्क को कैसे निकाला जाए, इस पर केंद्रित है, जो कि एमवीसी की बात करते समय लोग जो समझते हैं, उससे काफी अलग है।
डॉक ब्राउन

5

मेरे उत्तर में चार भाग हैं: संरचना, सरलता, परीक्षण और वाक्यविन्यास।

पहले तीन वास्तव में करना मुश्किल है!

संरचना का अर्थ है कि कम से कम मात्रा में कोड और फ्रेमवर्क, लाइब्रेरी आदि की अधिकतम मात्रा का उपयोग करना।

सादगी का अर्थ प्रारंभिक डिजाइन से वास्तविक कार्यान्वयन तक चीजों को सरल रखना है। नेविगेशन को सरल रखना, सरल प्लगइन्स का उपयोग करना, लेआउट को 'सादा' बनाए रखना सभी यहाँ मदद करेगा। वे अब ग्राहकों / उपयोगकर्ताओं के लिए 'बेचे' जा सकते हैं जो पीसी, आईपैड, मोबाइल और अन्य उपकरणों पर काम करने वाले पृष्ठों के फायदे देख सकते हैं।

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

वाक्य - विन्यास। आपके HTML, CSS, जावास्क्रिप्ट, आदि के लिए कोड चेकर / IDE / एडिटर-प्लगइन इत्यादि का उपयोग करना वास्तव में मददगार होता है। ब्राउजर्स ने जो फायदा उठाया है, वह आपके द्वारा अलग-अलग ब्राउज़रों के साथ अलग-अलग प्रदर्शन करने पर आपके द्वारा किए गए अक्षम HTML कार्यों को सक्षम करने में मदद करता है। यह, इसलिए आपके HTML प्रारूप की जाँच करने वाला एक उपकरण आवश्यक है। HTML को अच्छी तरह से बनाने के बाद unbloated HTML होने में बहुत मदद मिलती है क्योंकि बुरे कोड में दृश्यता अधिक होनी चाहिए।


4

मैंने जो समाधान पाया है वह घोषणात्मक कोड है। सिर्फ प्रक्रियात्मक कोड का उपयोग करना स्पेगेटी GUI कोड के लिए एक नुस्खा है। ज़रूर, "विजेट को चित्रित करने का एक विशेष तरीका" शायद कोड बना रहेगा। लेकिन यह एक वर्ग में अलग-थलग है। ईवेंट हैंडलर, कीबोर्ड शॉर्टकट, विंडो आकार - यह सब गड़बड़ सामान सबसे अच्छा है।


4

यहाँ बहुत सारे शानदार उत्तर हैं।

एक चीज जिसने मुझे GUI कोड को सरल बनाने में मदद की है वह यह सुनिश्चित करना है कि GUI का अपना डेटा मॉडल है।

एक सरल उदाहरण लेने के लिए, यदि मेरे पास 4 पाठ प्रविष्टि फ़ील्ड के साथ GUI है, तो मेरे पास एक अलग डेटा वर्ग है जो उन 4 पाठ प्रविष्टि फ़ील्ड की सामग्री रखता है। अधिक जटिल जीयूआई के लिए अधिक डेटा वर्गों की आवश्यकता होती है।

मैं एक GUI को एक मॉडल के रूप में देखता हूं। GUI मॉडल को एप्लिकेशन मॉडल - व्यू - कंट्रोलर के एप्लिकेशन कंट्रोलर द्वारा नियंत्रित किया जाता है। एप्लिकेशन दृश्य GUI कोड के बजाय GUI मॉडल है।


2

वर्ड प्रोसेसिंग, ग्राफिक्स एडिटर आदि जैसे अनुप्रयोगों में जटिल इंटरफेस होते हैं और उनका कोड सरल नहीं हो सकता है। हालांकि, व्यावसायिक अनुप्रयोगों के लिए, जीयूआई को इतना जटिल नहीं होना चाहिए लेकिन कुछ यह अभी भी कैसे है।

GUI को सरल बनाने की कुछ कुंजी (.NET पर लागू होती हैं):

  1. जब भी संभव हो सरल डिजाइन के लिए प्रयास करें। यदि व्यवसाय द्वारा नहीं बुलाया जाता है, तो फैंसी व्यवहार से बचें।

  2. एक अच्छा नियंत्रण प्रदाता का उपयोग करें।

  3. ग्राहक कोड में ही कस्टम नियंत्रण कार्यक्षमता न बनाएँ। इसके बजाय, उपयोगकर्ता नियंत्रण बनाएं जो मूल नियंत्रण को इस तरह से बढ़ाता है कि आप नियंत्रण प्रपत्र / पृष्ठ के कोड के बजाय नियंत्रण में अपने विशिष्ट व्यवहार को प्रतिबिंबित कर सकते हैं।

  4. अंतर्राष्ट्रीयकरण, संसाधन प्रबंधन, शैलियों आदि को संभालने के लिए एक फ्रेमवर्क (यहां तक ​​कि एक घर में उगाया गया) का उपयोग करें ताकि आप हर यूआई में इस कोड को न दोहराएं।

  5. नेविगेशन के लिए एक घटक (या फ्रेमवर्क) को रोजगार दें।

  6. त्रुटियों, चेतावनियों, पुष्टि आदि के लिए मानक संवाद बनाएँ।


1

अपने कोड और UI विकास के लिए ऑब्जेक्ट-ओरिएंटेड डिज़ाइन लागू करें:

  1. अलग प्रस्तुति और मॉडल एक एमवी-जो भी लाइब्रेरी / फ्रेमवर्क का उपयोग करें, या डेटा मॉडल से अलग व्यू / कंट्रोलर लॉजिक की सहायता के लिए अपना स्वयं का लिखें। बैकएंड के साथ सभी संचार मॉडल के अंदर किया जाना चाहिए, और मॉडल स्टेट हमेशा बैकएंड के साथ सिंक में होना चाहिए।
  2. Decoupling यदि ऑब्जेक्ट A को ऑब्जेक्ट B के बारे में पता है, तो A, B पर विधियों को कॉल कर सकता है, लेकिन B को A के बारे में पता नहीं होना चाहिए। इसके बजाय A, B की घटनाओं को सुन सकता है। यह सुनिश्चित करता है कि कोई परिपत्र निर्भरता न हो। यदि आपके ऐप में घटकों के बीच बहुत सारे ईवेंट हैं, तो एक EventBus बनाएं, या ट्विटर फ़्लाइट जैसे इवेंट-संचालित ढांचे का लाभ उठाएं।
  3. आंशिक बनाम पूर्ण रेंडर यदि आपका दृश्य किसी तालिका या आइटम की सूची है, तो आपके द्वारा संग्रह में से एक आइटम सम्मिलित / हटाने के लिए "ऐड", "हटाने" जैसी विधियाँ बनाने का प्रलोभन दिया जा सकता है। जब आप सॉर्टिंग और पेजिंग का समर्थन करना चाहते हैं तो आपका कोड आसानी से ब्लोट हो सकता है। इसलिए मेरी सलाह है: आंशिक परिवर्तन होने पर भी पूरे दृश्य को फिर से प्रस्तुत करें। प्रदर्शन के बारे में क्या? अच्छा यदि आपका संग्रह बड़ा है, तो आपको अपने संग्रह को वैसे भी करना चाहिए। वेब डेवलपर: सुनिश्चित करें कि आपके ईवेंट हैंडलर को दृश्य के मूल तत्व को सौंप दिया गया है जो नहीं बदलता है।
  4. मॉडल देखें जब आपके दृश्य की स्थिति बनाए रखने के लिए बहुत जटिल हो जाती है, उदाहरण के लिए, एक टेबल दृश्य को पंक्ति डेटा, स्तंभ डेटा, सॉर्ट क्रम का ट्रैक रखना पड़ता है, वर्तमान में जाँच की गई पंक्तियाँ (यदि यह बहु-चेक का समर्थन करती है), आदि, तो आपको शायद चाहिए उन राज्यों के लिए एक ViewModel ऑब्जेक्ट बनाएँ। यदि यूआई में कुछ परिवर्तन होता है (उदाहरण: उपयोगकर्ता एक पंक्ति की जांच करता है) तो आपकी व्यू ऑब्जेक्ट को ViewModel पर बसना चाहिए; और यह UI को अपडेट करके ViewModel के परिवर्तन की घटना का जवाब देना चाहिए। आमतौर पर यूआई को अपडेट करने से बचना चाहिए यदि परिवर्तन इवेंट यूआई द्वारा ट्रिगर हो।

यहाँ मेरी कुछ बातों को समझने में मदद करने के लिए एक छोटा लेकिन गैर-तुच्छ ऐप है। आप कोड और व्यू / मॉडल इंटरेक्शन आरेख यहां पा सकते हैं: https://github.com/vanfrankie/pushpopbox


0

आप "डेटाबाइंडिंग" की अवधारणा पर एक नज़र डालना चाहते हैं । यह एक तरह से यूआई तत्वों को एक घोषणात्मक तरीके से अमूर्त मॉडल तत्वों से जोड़ता है, ताकि मॉडल तत्व स्वचालित रूप से यूआई की सामग्री के साथ सिंक्रनाइज़ हो जाएं। इस दृष्टिकोण के कई लाभ हैं, उदाहरण के लिए डेटा को सिंक्रनाइज़ करने के लिए इवेंट हैंडलर्स को स्वयं लिखना नहीं है।

कई UI फ्रेमवर्क के लिए डेटाबाइंडिंग समर्थन है, उदाहरण के लिए .NET और एक्लिप्स / JFace

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.