एक जीयूआई को बिछाने को क्या "धोखा" माना जाना चाहिए?


18

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

जो कुछ भी मैंने खुद को पढ़ाया है, उसके अलावा कोई प्रोग्रामिंग पृष्ठभूमि के नहीं होने के नाते, मैं व्यक्तिगत रूप से मानता हूं कि आईबी और सभी इसकी विशेषताएं हैं ( ) IBOutlets, IBActionsमेरे कौशल स्तर (और उस मामले के लिए सभी कौशल स्तरों) के कोडर को कम समय में पूरा करने में मदद करती हैं।

आईबी के बारे में उनका दृष्टिकोण थोड़ा उत्साही है। उनका मानना ​​है कि इंटरफ़ेस बिल्डर का उपयोग करने वाले कोडर्स इस तथ्य में "धोखा" कर रहे हैं कि उन्हें हाथ से इंटरफेस बिछाने की ज़रूरत नहीं है।


सवाल:

इंटरफ़ेस तत्वों को बिछाने के लिए GUI बिल्डर का उपयोग "धोखा" माना जाना चाहिए (क्योंकि मूल रूप से अधिकांश प्रोग्रामिंग कोड में हाथ से बाहर बिछाने के लिए आवश्यक है)? क्यों?


32
क्यों भौंकते हैं जब आप इसे आपके लिए करने के लिए एक कुत्ता खरीद सकते हैं?
jfrankcarr

29
एक पिकअप ट्रक का उपयोग धोखा दे रहा है। असली पुरुष 120 डिग्री के मौसम में जंगली घोड़ों से आगे निकल जाते हैं। वे उन्हें पीछे से ले जाते हैं। अप्रचलित xkcd.com/378
जॉब

9
अपने दोस्त से पूछें कि वह चीटिंग के रूप में मैन्युअल रूप से काम करने के बजाय कंप्यूटर का उपयोग करने पर विचार क्यों नहीं करता है
डीपीडी

2
लगता है कि आपके दोस्त ने मिलने की आक्रामक समय-सीमा कभी नहीं तय की है।
मैटवेवी

15
इसे धोखा मानते हुए सिर्फ प्रोग्रामर स्नोबेरी है।
एलन बी

जवाबों:


60

यह धोखा नहीं है। आईबी जैसे कार्यक्रम उपकरण हैं। नौकरी के लिए सही उपयोग करें। इसके बारे में हठधर्मिता प्राप्त करने की आवश्यकता नहीं है।

यदि आप ऐसे उपकरण का उपयोग करके अधिक प्रभावी हैं, तो इसका उपयोग करें। एकमात्र चेतावनी यह है कि आपको अपने निर्णय लेते समय ट्रेड-ऑफ सीखना चाहिए। हाथ से लेआउट करना आपको ड्रैग-एंड-ड्रॉप सहजता की कीमत पर सटीक नियंत्रण देता है। ड्रैग-एंड-ड्रॉप टूल आपको कई चीजें त्वरित और आसान करते हैं, लेकिन समय के साथ आपके कोड को कठिन बना सकते हैं।

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


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

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

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

मुझे काम तेजी से करने के लिए एक विशेष उपकरण का उपयोग करने में कोई समस्या नहीं है, लेकिन इस पर जोड़ने के लिए: मेरी अपनी प्राथमिकता उन उपकरणों के लिए है जो डेटा-संचालित मॉडल, यानी XML में UI'a लेआउट को परिभाषित करते हैं - कोड-जनरेटर के बजाय, यह होगा आपके लिए लिखें "बटन btn54 = नया बटन (x: 543, y: 782);"
कटान ३१४

17

नौकरी के रूप में प्रोग्रामिंग एक खेल नहीं है और न ही एक खेल है। तो धोखा तर्क बहुत पतला है। यदि दृश्य उपकरण आपकी उत्पादकता बढ़ाते हैं तो आप उनका उपयोग न करने के लिए मूर्ख होंगे। मेरा अनुभव है कि ये मुझे बार-बार तुच्छ इंटरफ़ेस सामान किए बिना वास्तविक समस्या समाधान कोड पर अधिक समय बिताने के लिए मिलते हैं।

हालांकि खबरदार, यह इंटरफ़ेस में रेंगना सेटिंग्स या डेटा के लिए आसान है। प्रस्तुति और तर्क को अलग रखने के बारे में कट्टरपंथी बनें।


10

यह केवल धोखा है अगर तुम वहाँ पाने के लिए कुछ त्याग कर रहे हो। अधिकांश GUI लेआउट केवल कोड उत्पन्न करते हैं जो आप वैसे भी बनाते हैं (और लेआउट पर्याप्त नहीं होने के कारण अक्सर हाथ से संपादित करना पड़ता है)।

तो मूल रूप से, नहीं।

बाकी सभी समान हैं, कोई भी उपकरण जो आपको एक ही काम करने देता है तेजी से अच्छा है।


मैं दृढ़ता से 'उपलब्ध लेआउट उपकरण का उपयोग करता हूं' शिविर में हूं। उपकरण समय की बचत करते हैं, भले ही उत्पन्न कोड को अक्सर कुछ ट्विकिंग की आवश्यकता होती है। 'यह धोखा दे रहा है' आदमी को लगता है कि किसी ने ऐसा समय नहीं लिया है जो इसे अच्छी तरह से समझने के लिए इसे संपादित करने के लिए पर्याप्त समय दे।
टेक्सास में जिम 1

4

धोखा खेल का नाम है। किसी भी प्रकार का विकास निर्णय लेते समय आपको हमेशा सबसे आसान रास्ता अपनाना चाहिए। इसे धोखा कहो, इसे "उत्पादक होना"; इससे कोई फ़र्क नहीं पड़ता। आपको उस उपकरण को चुनना चाहिए जो आपको कम से कम प्रयास के साथ काम पाने में मदद करता है (निश्चित रूप से, रखरखाव और मापनीयता के बारे में मत भूलना)।

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


3

बिलकुल नहीं। यह पूरी तरह से हाथ से करना, हालांकि, अपने लिए अनावश्यक काम करने का एक स्पष्ट मामला है।

(आम तौर पर मैं इसे एक बिल्डर का उपयोग करके रखना चाहता था और अगर किसी भी ठीक-ट्यूनिंग की आवश्यकता होती है, तो यह - लेकिन हमेशा नहीं - हाथ से किया जाता है)।


2.0 संस्करण के रूप में .Net में मुझे विश्वास है कि जीयूआई और तर्क अलग-अलग कक्षाओं के लिए धन्यवाद है - एक ही वर्ग को दो अलग-अलग फाइलों में परिभाषित किया गया है; एक पूरी तरह से ऑटो-जनरेट किया गया है, और एक आपके द्वारा अनुकूलित है।
नौकरी

मैं इस कथन से सहमत नहीं हो सकता कि यह "अनावश्यक काम करने का स्पष्ट मामला" है। यह सब उपकरण और प्रोग्रामर के कौशल पर निर्भर करता है। उदाहरण के लिए, मुझे यकीन है कि मैं एक tcl / tk GUI को तेजी से कोड कर सकता हूं और आपकी पसंद के किसी भी GUI बिल्डर का उपयोग करने से बेहतर अंतिम कोड हाथ से कर सकता हूं। OTOH, वहाँ कोई रास्ता नहीं है अगर मैं एक .net डेस्कटॉप ऐप बनाने के लिए विजुअल स्टूडियो के अलावा और कुछ का उपयोग करने पर विचार करेंगे।
ब्रायन ओकले

चूंकि ओपी सामान्य मामले के बारे में स्पष्ट रूप से बात कर रहा है (प्रश्न में बोल्ड टेक्स्ट देखें) मैं सामान्य मामले के संबंध में आपकी असहमति को स्वीकार नहीं कर सकता, हालांकि मैं स्वीकार करता हूं कि विशेष मामले मौजूद हैं और कर सकते हैं। इस प्रकार कभी ट्वास।
मैक्सिमस मिनिमस

3

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

FWIW मुझे कुछ महीने पहले जावा स्विंग में यूआई लागू करना था। मैंने इसका इस्तेमाल कभी नहीं किया, इसलिए मैंने इसे हाथ से लिखा है ताकि मुझे बेहतर समझ मिल सके कि यह कैसे काम करता है। अब जब मुझे मूल एपीआई पता है, तो मैं कभी भी हाथ से नहीं लिखूंगा अगर मैं इसे मदद कर सकता हूं!


1

जैसा कि @Bryan ओकले कहता है, यह सिर्फ एक उपकरण है और "धोखा" नहीं है। यह सब इस बात पर निर्भर करता है कि आप वास्तव में क्या कर रहे हैं। यदि हाथ से यह अविश्वसनीय रूप से श्रमसाध्य अभ्यास करता है, तो आपको वास्तव में अन्य विकल्पों की तलाश करनी चाहिए जो आपको अधिक उत्पादक बनाते हैं।

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

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


1

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

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