क्या "पहिया को सुदृढ़ नहीं करता है" मानव स्मृति की सीमाओं को अनदेखा करता है?


16

हास्केल और एफ # में काम करने वाली एक बात ने मुझे सिखाया है कि विश्वविद्यालय में कोई मुझसे ज्यादा होशियार है, जो शायद मैं पहले से ही ऐसा कर रहा हूं जो मैं कर रहा हूं। इसी तरह C # और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, संभवतः "इट" के लिए एक लाइब्रेरी है, जो भी यह है कि मैं कर रहा हूं।

प्रोग्रामिंग में अमूर्तता को पुन: उपयोग करने पर ऐसा जोर है कि मैं अक्सर बीच में दुविधा महसूस करता हूं: 1) किसी चीज को कम और खुद को गंदा करना या 2) किसी और के अधिक मजबूत पुस्तकालय / समाधान को खोजने के लिए एक ही समय बिताना और बस उसी का उपयोग करना।

जैसे हाल ही में यहाँ के एक कोडर ने CSV फ़ाइलों के लिए एक (डी) सीरियलाइज़र लिखा था, और मैं मदद नहीं कर सकता था लेकिन यह सोचता था कि ऐसा कुछ संभवत: ऑनलाइन खोजना बहुत आसान है, अगर यह .NET मानक के साथ नहीं आता है। एपिस।

हालाँकि, मैं उसे दोष नहीं देता हूँ। कई बार .NET में काम करने के दौरान मैंने जो भी जाना है, उसके आधार पर एक साथ एक समझौता किया है, केवल यह महसूस करने के लिए कि कुछ विधि कॉल या ऑब्जेक्ट या कुछ और था , अक्सर एक ही लाइब्रेरी में, जो किया मैं चाहता था और मुझे इसके बारे में पता नहीं था।

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

जवाबों:


9

सबसे पहले, आपको "घटकों" की पहचान करने के लिए सीखने की ज़रूरत है जो सामान्य / पुन: प्रयोज्य हैं जो एक पुस्तकालय या 3 पार्टी समाधान पहले से मौजूद होने की संभावना है। एक बार जब आप ऐसा कर लेते हैं, तो महसूस करें कि, भले ही आप एक अच्छे डेवलपर हों, लेकिन अनगिनत डेवलपर्स के एक ही समस्या पर अनगिनत घंटे बिताने के सामूहिक अनुभव से बेहतर समाधान तैयार होने की संभावना है जो आप कभी भी कर पाएंगे। इसका मतलब यह नहीं है कि आपको "पहिया को सुदृढ़ नहीं करना चाहिए ", लेकिन यदि आप ऐसा करना चुनते हैं, तो आपके पास ऐसा करने के लिए बेहतर डीएएमएन अच्छा औचित्य है।

प्रोग्रामिंग में अमूर्तता को पुन: उपयोग करने पर ऐसा जोर है कि मैं अक्सर बीच में दुविधा महसूस करता हूं: 1) किसी चीज को कम और खुद को गंदा करना या 2) किसी और के अधिक मजबूत पुस्तकालय / समाधान को खोजने के लिए एक ही समय बिताना और बस उसी का उपयोग करना।

यह की कीमत का उल्लेख भी है कि अगर यह आप के रूप में यह यह अपने आप को लिखने के लिए करता है एक मौजूदा पुस्तकालय / समाधान खोजने के लिए उतना ही समय लगता है, याद कर अपने आप को भी मतलब है कि आप इसे बनाए रखने के लिए होगा हमेशा के लिए । आप न केवल पहिया का पुनः आविष्कार कर रहे हैं, बल्कि इसे चलाने के लिए पूरे गड्ढे के चालक दल भी। बेशक, कुछ लाइब्रेरी छोटी या खराब बनी हुई हैं, लेकिन ये ऐसी चीजें हैं जिन्हें आपको 3 पार्टी समाधान का चयन करते समय ध्यान में रखना चाहिए।


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

मौजूदा पुस्तकालय / समाधान के लिए खोज पर खर्च किए गए समय को सही ठहराने के लिए +1 ।
rwong

गड्ढे के चालक दल को इंगित करने के लिए +1, हम हमेशा उनके बारे में भूल जाते हैं
फिलिप डुपनोविक

5

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

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


1
...या फिर इसके विपरीत। कभी-कभी यह एक बहुत ही विशेष कार्य के लिए तैयार किया गया था और सिर्फ इतना लचीला नहीं है कि आपके कोड को क्या करने की आवश्यकता है।
जेसन बेकर

यह वही है जो मैं जवाब देने जा रहा था
डोमिनिक मैकडोनेल

4

प्रोग्रामिंग की दुनिया में आपका स्वागत है। यह मुद्दा आपके और आपके भविष्य के सहयोगियों के बीच कई असहमतियों का विषय होगा। आपके पास दो विकल्प हैं:

  1. अपना रोल करें।
  2. किसी और के समाधान के शीर्ष पर कुछ बनाएँ।

मुझे लगता है कि ऐसे समय हैं जहां दोनों समाधान उपयुक्त हैं। उदाहरण के लिए, मैं ORM के अपने CSV पार्सर को रोल करने से बचना पसंद करूंगा यदि मैं इसे ज्यादातर टाल सकता हूं क्योंकि यह बहुत कठिन काम है। दूसरी ओर, पुस्तकालय अक्सर प्रतिबंधित होते हैं। मैं कहूंगा कि मेरे द्वारा काम किए गए हर प्रोजेक्ट के लिए, मैंने पुस्तकालयों का सामना किया है जो मेरी समस्या को पूरी तरह से हल करेंगे यदि यह इस कमी के लिए नहीं है । या कभी-कभी एक पुस्तकालय बिल्कुल वही होता है जिसकी आपको आवश्यकता होती है जब आप पहली बार कुछ करना शुरू करते हैं, लेकिन परिवर्तन करने की आवश्यकता होने पर मदद से अधिक नुकसान होता है।

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


मैं कहता हूं कि यह तीन तरह से पसंद है: इस विशेष आवश्यकता के लिए अपना स्वयं का समाधान रोल करें , किसी और के मौजूदा समाधान को अनुकूलित करें, या भविष्य की जरूरतों को पूरा करने के लिए अपने स्वयं के सामान्य-उद्देश्य समाधान को रोल करें । तथ्य यह है कि यह तीन-तरफा पसंद है, यह दो-तरफा पसंद की तुलना में बहुत कठिन है।
15

2

यह (या इसी तरह की बात) अक्सर मुझे पिछली नौकरी में हुई है, जहां रूपरेखा गंभीर इनर प्लेटफ़ॉर्म इफ़ेक्ट से पीड़ित थी।

मूल रूप से, उनके कोड का आधार शुरुआती दिनों के विंडोज सी / सी ++ से विकसित हुआ, फिर एमएफसी के तहत संकलित किया जाना शुरू हुआ - और इसलिए रखरखावकर्ताओं ने एमएफसी और उनके पुराने इन-हाउस डेटा संरचनाओं और विंडोिंग घटकों को मिलाना शुरू कर दिया। आंतरिक मंच बहुत अच्छी तरह से प्रलेखित नहीं किया गया था, लेकिन यह उस उत्पाद पर चीजों को करने के लिए "द वे" था, जो कुछ आंतरिक सुविधाओं के कारण प्रदान किया गया था। मुझे अक्सर कंपनी के आंतरिक ढांचे के साथ काम करने के बजाय खरोंच से अपने स्वयं के सामान (एमएफसी मूल सिद्धांतों से) लिखना आसान और तेज लगता था।

(ठीक है, तो यह आपके प्रारंभिक बिंदु के लगभग विपरीत प्रतीत होता है - लेकिन सिद्धांत एक ही है, हे! हाँ, कभी-कभी यह वास्तव में जल्दी करने के लिए समय और प्रयास खर्च करने की तुलना में अपना खुद का काम करने के लिए जल्दी होता है एक मौजूदा पुन: प्रयोज्य खोजने के लिए। समाधान।)

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