2010-07-13 7 views
6

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

मेरे लिए यह सबसे बुरी चीजों में से एक है, यह त्रुटियों की ओर जाता है, यह उबाऊ होता है और यह शोर को बढ़ाता है।

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

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

हालांकि, जब मैं इस मुद्दे को उठाने और AOP तरह समाधान का प्रस्ताव (PostSharp.NET) या का उपयोग करते हुए प्रतिनिधियों (गैर के लिए - सी # - लोगों: गुमनाम काम करता है, अक्सर एक लैम्ब्डा ऑपरेटर का उपयोग एहसास हुआ), सभी मुझे मिलता है कि "हम परवाह नहीं"।

बॉयलरप्लेट कोड द्वारा पेश किए गए शोर की पागल मात्रा से परेशान कोई और यहां और बॉयलरप्लेट - समस्या के समाधान को हल करने के तरीकों के बारे में सोचना चाहता है?

उत्तर

9

इसके लायक होने के लिए, मैं पूरी तरह से आपकी तरफ हूं।

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

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

80 के दशक में, मैंने सी ++ के लिए मेमोरी लीक डीबगर्स के लिए विज्ञापनों के साथ व्यापार मैग लगाए, और यह मेरे लिए एक स्पष्ट संकेत था कि सी ++ में मेमोरी प्रबंधन गंभीर रूप से टूटा हुआ है। अब, जावा और सी # के आसपास, मुझे कोड उत्पन्न करने वाली सहायता का प्रसार दिखाई देता है, और यह मुझे इंगित करता है कि उन भाषाओं में ऐसे मुद्दे हैं जो कहीं और बेहतर हल किए जाएंगे।

स्कैला के पास स्वयं के मुद्दे हैं, लेकिन मुझे लगता है कि उन्होंने संपत्तियों और ऑटो-स्टार्टिंग कन्स्ट्रक्टर के साथ क्या किया है।

+1

बिल्कुल, इस तरह मैं इसके बारे में महसूस करता हूं। बॉयलरप्लेट कोड की मात्रा (मेरे पास इसके लिए एक अलग नाम है: "एस *** कोड", इस तरह मैं वास्तविक जीवन में इसे कॉल करता हूं) सी # में कभी-कभी भारी होता है ... :-( –

+1

बिल्कुल। कभी-कभी सबसे कठिन कोडबेस के बारे में बात कोड की तीव्र मात्रा है। – dsimcha

5

बस kill'em। नहीं, वास्तव में, अगर कोई बॉयलरप्लेट कोड लिखता है और इसे सुधारने की परवाह नहीं करता है, तो मुझे संदेह है कि हम उसे पेशेवर कह सकते हैं। यह अक्सर होता है कि प्रबंधन तेजी से किए गए कार्यों को देखना चाहता है और केवल एक चीज है जो कुछ लिखने के लिए केवल बॉयलरप्लेट कोड को खुश करने के लिए है। यदि आपका प्रबंधन इस तरह के दृष्टिकोण को प्रोत्साहित करता है - अपना काम बदलें।

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