कुछ लोगों द्वारा प्रोग्रामिंग में चतुराई को हानिकारक क्यों माना जाता है?


89

मैंने हाल ही में विभिन्न अमूर्त तकनीकों से संबंधित बहुत सारे प्रश्न देखे हैं, और उत्तर मूल रूप से कह रहे हैं कि प्रश्न में तकनीक "बहुत चालाक है।" मुझे लगता है कि प्रोग्रामर के रूप में हमारी नौकरियों का हिस्सा उन समस्याओं का सबसे अच्छा समाधान निर्धारित करना है जो हमें हल करने के लिए दिए गए हैं, और होशियारी ऐसा करने में सहायक है।

तो मेरा सवाल यह है: क्या लोग हैं जो सोचते हैं कि कुछ अमूर्त तकनीक बहुत चालाक हैं प्रति से चतुराई का विरोध करते हैं , या आपत्ति के लिए कुछ और कारण है?

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


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


15
@nlawalker: मुझे लगता है कि मैं इसे अभी प्राप्त करता हूं। "स्पष्ट" या "सरल" क्योंकि वे वास्तव में एक शब्द है जो उपयोग करने के लिए इसका मतलब यह लोग शब्द का प्रयोग "चालाक" जब के लिए एक विलोम के रूप में कोड की चर्चा करते हुए है "स्पष्ट" या "सरल" के लिए एक विलोम।
लैरी कोलमैन

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

2
क्या कोई टिप्पणी नहीं करता है? यहीं पर आप चतुराई को समझाते हैं, ताकि अनुसरण करने वाले समझ सकें। 6 महीने के समय में आप की तरह।
फिल लेलो

जवाबों:


207

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

यह पता लगाना कि क्या हो रहा है उत्तरोत्तर कठिन हो जाता है क्योंकि जटिलता एक चतुर विधि से एक चतुर वर्ग से एक चतुर पैटर्न तक बढ़ती है। प्रसिद्ध दृष्टिकोणों के अलावा, आपको उस विचार प्रक्रिया का पता लगाना होगा जो एक "चतुर" समाधान बनाने में चली गई, जो काफी मुश्किल हो सकती है।

उस ने कहा, मैं एक पैटर्न से बचने से नफरत करता हूं (जब इसका उपयोग उचित है) सिर्फ इसलिए कि कोई इसे समझ नहीं सकता है। यह सीखने के लिए डेवलपर्स के रूप में हमारे ऊपर है और अगर हम कुछ नहीं समझते हैं, तो इसे सीखने का एक कारण है, न कि इसे टालना।


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

आखिरी पैराग्राफ मुझे पसंद है। बाकी सच है, लेकिन दुर्भाग्यपूर्ण है।
20

ऐसा लगता है कि Zend PHP के लिए :) स्रोत कोड देखा है
टिम पोस्ट

+1 एक साधारण पैटर्न एक चतुर पैटर्न के रूप में अच्छी तरह से प्रदर्शन नहीं कर सकता है , और जैसा कि आपने कहा, यह डेवलपर्स के रूप में हमारे ऊपर है कि इसे समझने के लिए "चतुर" के लिफाफे को जारी रखें।
स्टीफन फुरलानी

3
जैसा कि किसी को कुछ "चतुर" करने का औचित्य साबित करना होता है जब यह वास्तव में सिर्फ "न्यूनतम, मौखिक रूप से सही" होता है, मैं यह जोड़ना चाहूंगा कि वास्तव में चतुर क्या है के सवाल पर कुछ व्यक्तिवाद है। उदाहरण के लिए, कुछ लोग हमेशा लिखना चाहेंगे if FuncX() then return true, else return false, और कभी नहीं चाहेंगे कि आप सिर्फ लिखें return FuncX()। मैं मजाक नहीं कर रहा, मैंने सचमुच उस बातचीत को किया है। क्योंकि लोग चाहते हैं कि कहीं न कहीं उनका ब्रेकपॉइंट लटक जाए, या कुछ और। :-)
वॉरेन पी

102

KISS सिद्धांत

मूर्ख इसे सहज ही रखो। चतुर समाधान महान हैं, लेकिन अक्सर सबसे सरल सीधे आगे समाधान सबसे अच्छा है।

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

ब्रायन कर्निघन


8
दूसरी ओर, यदि आप जितना हो सके चतुराई से कोड लिखते हैं, तो आपको इसे डीबग करना सीखना होगा, और ऐसा करने में आप अधिक चतुर हैं। या कुछ इस तरह का।
जेम्स मैकनेलिस

11
@ नाम: या आप बस असफल। ;)
जोश K

10
@Josh कश्मीर: मैं गया है हमेशा के रूप में जाना जाता है KISS "यह सरल रखें, बेवकूफ!" - en.wikipedia.org/wiki/KISS_principle
Orbling

1
@Orbling: मैंने इसे अलग तरह से याद किया, ओह ठीक है, अब मुझे पता है।
जोश के

1
विकिपीडिया के अनुसार, "इसे सरल रखें और बेवकूफ बनें" ? :) क्या इसका मतलब यह है कि इसे सरल रखना मूर्खतापूर्ण है या इसे सरल रखने के लिए आपको मूर्ख होना चाहिए ? : पी
मतीन उल्हाक

83

मूर्खता जटिलता को अनदेखा करती है; व्यावहारिक लोग इसे भुगतते हैं; विशेषज्ञ इससे बचते हैं; जीनियस इसे हटा देते हैं। - एलन पर्लिस


5
अच्छा उद्धरण के लिए +1 और निहितार्थ के बिना पहला उत्तर होने के लिए कि कुछ सरल और चतुर दोनों नहीं हो सकता है
लैरी कोलमैन

15
जो महत्वपूर्ण है वह यह है कि यह प्रोग्रामर है जिसे कोड नहीं, चतुर माना जाता है।
क्रिस्टोफर जॉनसन

रास्ता बेहतर उद्धरण तो एक चतुर तरीके से शब्द का दुरुपयोग करने वाला एक बेवकूफ है।
डेरेक लिट्ज

30

सबसे अच्छा समाधान हमेशा सबसे चतुर समाधान नहीं होता है। कभी-कभी सरल समाधान समान रूप से अच्छे होते हैं।

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


3
एक जटिल समस्या का एक सरल समाधान उतना ही चतुर है जितना कोई भी प्राप्त कर सकता है।
जेएफओ

हालांकि हमेशा कैवेट होता है जिसे आप ओवर-सरलीकृत नहीं करना चाहते हैं क्योंकि अनुचर कोड (या इसे नहीं पढ़ सकता)।
केन हेंडरसन

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

1
@ मिचेल, प्रदर्शन की कमी के लिए आवश्यक हो सकता है कि आपका कोड चालाक हो। यह तो सीखने वाले का काम है, और यदि वे नया रखरखाव नहीं कर सकते हैं।
स्टीफन फुरलानी

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

26

ब्रायन कर्निघन को उद्धृत करने के लिए:

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


"... जब तक आपने चालाक की सही परिभाषा का उपयोग नहीं किया और कोड वास्तव में समझने और डिबग करने के लिए सरल है।"
डेरेक लिट्ज

मुझे लगता है कि आप अंगूठे के शब्दकोश पर निर्भर करता है, मुझे लगता है। मेरे अनुभव में, किसी भी "चतुर" कोड - udnerstand को आसान है या नहीं - अभी भी कल्पना में एक भाग्यशाली संयोजन का फायदा उठाता है। यहां तक ​​कि अगर यह स्पष्ट है, तो इसे चिह्नित किया जाना चाहिए, अगर ऐसी धारणा बदल सकती है और कोड के विभिन्न भागों में लीक नहीं होनी चाहिए।
peterchen

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

उस पर कोई आपत्ति नहीं है :)
peterchen

22

चतुराई एक उपकरण है; अपने आप से यह हानिकारक नहीं है। यह केवल उस संदर्भ में हानिकारक हो जाता है जहाँ यह आवश्यक नहीं है।


16

"चतुर", जब कोड पर लागू किया जाता है, तो लगभग हमेशा "अनावश्यक रूप से जटिल" के लिए एक व्यंजना होती है।

अच्छा, स्पष्ट, सरल कोड पढ़ना काफी कठिन है। "चतुर" कोड पढ़ना लैटिन कविता को फिर से पढ़ने के समान है।

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

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


5
मैंने इस बात को उकेरा होगा कि आपने सामाजिक प्रोटोकॉल और "लोगों के बारे में उपदेश नहीं दिया है।"
जेसन बेकर

2
यह ठीक है- और मुझे याद दिलाने के लिए धन्यवाद। मुझे बहुत उपदेश मिलता है। लेकिन मैं कुछ (कई?) प्रोग्रामर की अक्षमता और / या सामान्य मानव व्यवहार से निपटने की अनिच्छा, और हमारे क्षेत्र में दिखाई देने वाली सहानुभूति और आत्मनिरीक्षण की सामान्य कमी से परेशान हूं। हो सकता है कि मैंने इटैलिक्स के बजाय उद्धरणों में "लोगों को" डाल दिया हो। अंग्रेजी मेरी पहली भाषा नहीं है, मुझे नहीं पता था कि छोटे बिंदु पर कैसे प्राप्त किया जा सकता है, एक महान डेवलपर होने के लिए, आपको न केवल कोड को समझना होगा, बल्कि लोगों को भी। IMHO।
fzwo

मेरे उत्तर का संपादन किया। स्पष्ट / कम आक्रामक अब?
fzwo

पहले वाक्य के लिए +1, जिसे मैंने पहले कुछ उत्तर प्राप्त करने के बाद वास्तव में निष्कर्ष निकाला था।
लैरी कोलमैन

हां, इस संदर्भ में मूर्ख लोगों द्वारा कितनी चतुराई का इस्तेमाल किया जा रहा है, यह स्पष्ट करने के लिए धन्यवाद!
डेरेक लित्ज़

9

अधिकांश लोग "कोड क्या है यह जानने के लिए कोड की बहुत अधिक आवश्यकता होती है" और इसके साथ जाने वाले सभी बुरे कामों को समझने के लिए अधिकांश लोग चतुराई पर ध्यान केंद्रित कर रहे हैं।

  1. कोई भी व्यक्ति इसका पता नहीं लगा सकता है, अकेले इसे बनाए रखें / इसे डिबग करें।
  2. जिसने लिखा है उसे यह भी पता नहीं है कि वह क्या करता है।
  3. यह वास्तव में शुरू होने के लिए शानदार नहीं हो सकता है
  4. आदि....

सभी अच्छे बिंदु, लेकिन चतुराई का एक और नकारात्मक पहलू है और यह पुरानी अहंकार समस्या है। यह की तर्ज पर मुद्दों का कारण बनता है

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

हम सभी कभी-कभी बहुत अधिक अहंकार के दोषी होते हैं, लेकिन जब यह टीम के रास्ते में हो जाता है तो यह एक समस्या है।


8

अच्छा चतुर - गैर-चालाक विकल्प में कोड बनाम लाइनों की चतुर लाइनों के बीच उच्च अनुपात। कोड की 20 पंक्तियाँ जो आपको 20000 लिखने से बचाती हैं, अत्यंत उत्तम है। अच्छा चतुर अपने आप को काम बचाने के बारे में है।

खराब क्लीवर - कोड की पंक्तियों के बीच कम अनुपात बनाम लिखित कोड की लाइनें। चतुर कोड की एक पंक्ति जो आपको कोड की पांच पंक्तियाँ लिखने से बचाती है, वह है बैड क्लीवर। बुरा चालाक "सिंटैक्टिक हस्तमैथुन" के बारे में है।

बस ध्यान दें: बैड क्लीवर को कभी भी "बैड क्लीवर" नहीं कहा जाता है; यह अक्सर उपनाम "सुंदर", "सुरुचिपूर्ण", "संक्षिप्त", या "रसीला" के तहत यात्रा करेगा।


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

2
निर्भर करता है। उद्देश्य-सी / सी ++ / सी में, घटना आमतौर पर एक व्यक्ति तक सीमित होती है। पर्ल और रूबी में, अक्सर पूरे समुदाय में बैड क्लीवर के "सुंदर", "सुरुचिपूर्ण", आदि के बारे में एक साझा मूल्य होगा
user8865

1
@ user8865: इसके अलावा, "अच्छा चतुर" कोड मूल की तुलना में डिबग करने के लिए बहुत आसान होता है क्योंकि आपकी परिभाषा के अनुसार इसके कम परिमाण के 3 आदेश हैं।
लैरी कोलेमन

2
आह, तो पर्ल कार्यक्रम हैं - अब लगभग परिभाषा के अनुसार - बहुत अच्छा चतुर :) अच्छा पता है!

7

मुझे हर किसी को चतुर की परिभाषा के बारे में आश्चर्य करना होगा।

व्यक्तिगत रूप से, मुझे लगता है कि जब मैंने एक कठिन, जटिल समस्या को लिया है, तो मैं चतुर हूं, और दक्षता के स्वीकार्य स्तर को बनाए रखते हुए इसे बहुत सरल और सीधे तरीके से लागू किया है।

tl; dr I चालाक लग रहा है, जब एक कोड की समीक्षा के दौरान, मेरे समीक्षक कहते हैं "वाह, जितना मैंने सोचा था कि यह आसान था", के रूप में "wtf यह सब है .."


1
एलएल के बारे में एलएल? डॉ, आपको लगता है कि प्रोग्रामर कितनी धीमी गति से पढ़ते हैं? हां, मैं वास्तव में जो है वास्तव में इसके विपरीत का मतलब निकालने के लिए चतुर के दुरुपयोग का तिरस्कार करता हूं। गूंगा / अज्ञानी / बुराई डेवलपर्स और प्रबंधक वास्तव में इसका उपयोग किसी ऐसे व्यक्ति को काम पर रखने के लिए उचित ठहराने के लिए करते हैं जो उन्हें लगता है कि "बहुत स्मार्ट" हो सकता है।
डेरेक लिट्ज

6

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

एक शीर्ष स्तरीय प्रदर्शन गहन टीम और एक मध्यम स्तरीय रखरखाव टीम के बीच किसी समय वास्तविक जीवन के अंतर को देखने के लिए आगे बढ़ें जो "बहुत चालाक" है।

सिद्धांत के तर्कों को छोड़कर, बहुत चालाक अक्सर इस बात पर आधारित होता है कि कम से कम कुशल टीम के सदस्य यथोचित कार्य कर सकते हैं, इसलिए यह पर्यावरण के बहुत सापेक्ष है।


बहुत बढ़िया: "बहुत चालाक अक्सर कम से कम कुशल टीम के सदस्यों को यथोचित काम कर सकता है" पर आधारित है
10:59 बजे परिक्रमा करना

आपके स्थान के आधार पर यह कई बार "उत्कृष्ट" से कम होता है :-)
बिल

टीम के सबसे कम कुशल सदस्य की किसे परवाह है? लगभग हर टीम (हालांकि मुझे यकीन है कि कुछ अपवाद हैं) में कम से कम एक सदस्य है, जिसके पास बिल्कुल कोई व्यवसाय नहीं है जो उसे / खुद को एक प्रोग्रामर कहता है।
dsimcha

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

@ बिल: लाम्बा फंक्शन ??? कोई भी व्यक्ति जो कुछ भी सरल नहीं समझ सकता है, भले ही स्पष्ट रूप से उनके बारे में जानने के लिए कहा जाए, कोई भी व्यवसाय पेशेवर प्रोग्रामर नहीं है।
dsimcha

6

कभी-कभी मैं इतना चालाक हो गया हूं कि मैं गलत हो गया हूं।


1
वह हो सकता है। और कभी-कभी, कुछ गलत है, तो यह सही है।
बोबोबो

वे उन सिद्धांतों को जॉन कहते हैं। सिद्धांत गलत और एक बार और गलत होने चाहिए :), इसका मतलब यह नहीं है कि हमें जितना संभव हो उतना चालाक और चतुर होने से रोकना चाहिए। इस दुनिया में हम और नेता कैसे बनेंगे! "आह, लेकिन एक आदमी की पहुंच उसकी समझ से अधिक होनी चाहिए - या उसके लिए स्वर्ग क्या है?"
डेरेक लिट्ज

4

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


विकास के संबंध में एक सकारात्मक के रूप में "सस्ते" का उपयोग करने के लिए +1
गैरी रोवे

मैंने बहुत अधिक 'चतुर' कोड देखा है जो कि निष्पादन योग्य नहीं है!
HLGEM

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

3

यदि चतुर कोड + टिप्पणियों की मात्रा को समझने योग्य कोड बनाने के लिए आवश्यक है <= सरल कोड, तो मैं कहता हूं कि चतुर कोड के लिए जाएं। हर बार।

मुझे लगता है कि समस्या तब पैदा होती है जब "चतुर कोड" लिखने वाले लोग जानबूझकर इसे ठीक से टिप्पणी करने में विफल होते हैं, क्योंकि केवल शुरुआत में यह समझ में नहीं आता है कि आने वाली पीढ़ियों के लिए आने वाली पीढ़ियों को कितना "चतुर" समय बिताना होगा।


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

अच्छा जवाब, (+1 नहीं कर सकता, कोई नहीं बचा, बाद में होगा)। यदि लोग चालाक कोड लिखने में कोई समय नहीं बिताते हैं और अन्य लोग इसे समझने में कोई समय नहीं बिताते हैं, तो कम जटिल सरल कोड पसंद करते हैं, भले ही कम कुशल हो। तब कौशल में कोई उन्नति नहीं होगी।
21

सबसे बढ़िया उत्तर। मंत्र: सरल आधार रेखा लिखो, स्टार्टर कोड जो साहसी और धीमा है जैसा कि सभी उठते हैं ... और जब आप इसे एक अपठनीय एक-लाइनर को उबालते हैं तो इसे एक टिप्पणी करें। कि कैसे आप अपनी भाषा में सभी गंदे चाल सीखते हैं!
दरोगाओं

अगर मैं आपका प्रयोग करने के लिए चतुर का मतलब समझा जाता हूँ, मैं व्यक्तिगत रूप से कुछ जटिल कोड लिखा है कि लॉगिंग के माध्यम से समझ में आता था। हालांकि, मैंने उस समय के लिए कोड को लिखने की योजना नहीं बनाई थी, लेकिन इसने मुझे कुछ समय बचा लिया, लेकिन मैंने एक # TODO जोड़ा कि अगर हम इसे महत्वपूर्ण रूप से संशोधित करना चाहते हैं तो इसे सरल होना चाहिए।
डेरेक लिट्ज

3

मुझे एक उद्धरण याद दिलाया गया है जिसे मैंने कई अलग-अलग लोगों को जिम्मेदार ठहराया है, जैसा कि अक्सर अच्छे उद्धरण हैं।

विवरण बताने के लिए:

कोई भी बुद्धिमान व्यक्ति सरल जटिल बना सकता है, जटिल को सरल बनाने के लिए एक प्रतिभा लेता है।

एक जटिल विचार लेना और इसे सरल बनाना इसलिए यह समझ में आता है कि निर्माणकर्ता की चतुराई दिखाता है लेकिन एक सरल विचार लेना और इसे जटिल बनाना दिखाता है कि निर्माणकर्ता चतुर दिखना चाहता है।


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

2

यदि 'चतुर' समाधान का पता लगाना मुश्किल है, तो इसका उपयोग नहीं किया जाना चाहिए। उदाहरण के लिए, यदि साइड इफेक्ट्स के माध्यम से आप एक जटिल गणना को एक पंक्ति में अनुबंधित कर सकते हैं, तो यह चतुर है। लेकिन अगर किसी और को यह पता लगाने में एक घंटा लगता है कि आपने दुनिया में क्या किया है, तो यह बहुत चालाक है।


2
पर्याप्त रूप से उचित है, लेकिन क्या आपका जवाब बदल जाता है अगर वह व्यक्ति जो कोड का पता नहीं लगा सकता है वह भाषा की सभी विशेषताओं से परिचित नहीं है?
लैरी कोलमैन

2
यह अलग है, कम से कम IMO। यदि कोई व्यक्ति किसी भाषा की विशेषताओं से परिचित नहीं है, तो वे यह निर्धारित करने की स्थिति में नहीं हैं कि चतुर क्या है या नहीं।
जो डी

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

2

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

कई ज्ञात एल्गोरिदम हैं जो चतुर हैं। क्विकॉर्ट एक है, आईएमओ है।

"चतुर" (व्यंग्य के साथ) कोड आमतौर पर चर के सेट होने और सिस्टम के राज्यों के बारे में धारणाएं बनाते हैं जो "चतुर" कोड से वस्तुतः डिस्कनेक्ट हो जाते हैं (जैसा कि फाइलें पहले खोली गई थीं, नेटवर्क कनेक्शन, डेटाबेस, आदि ...)।

एक "चतुर" कोड को सही ढंग से बनाए रखने के लिए आपको अपने मस्तिष्क पर कितना डेटा लोड करना पड़ता है, यह एक अच्छा लागत-लाभ अनुपात होने के लिए आमतौर पर बड़ा होता है।


1

"चतुर कोड" कोई भी कोड है जिसके लिए प्रोग्रामर को वास्तव में कठिन सोचना पड़ता है या इसे लिखने के लिए कुछ उन्नत कौशल का उपयोग करना पड़ता है। इसके साथ यह समस्या एक निश्चित "चतुरता मार्जिन" की आवश्यकता की उपेक्षा करती है, जो ब्रायन डब्ल्यू। कर्निघन द्वारा व्यक्त की गई है:

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


1

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

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

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

यदि कोई औचित्य नहीं है, तो यह शायद या तो समयपूर्व अनुकूलन, अति-इंजीनियरिंग, या एक YAGNI तरह की समस्या है। यदि यह कुछ सरल करने के लिए अप्रत्यक्ष के 15 स्तरों पर ले जाता है, तो एक अच्छा मौका है कि आप पिछली श्रेणियों में भी गिर सकते हैं। और अगर यह दस्तावेज नहीं है, तो यह सिर्फ परेशानी है।

महान कोड को इसे समझने के लिए हर समय 100% पर बनाए रखने की आवश्यकता नहीं होनी चाहिए। अच्छा कोड चतुर है। महान कोड लगभग उतना ही कुशल हो सकता है, लेकिन कई अन्य पहलुओं में बेहतर है। महान कोड को आपके आवेदन के डिजाइन का पालन करने के लिए 15 विचारों के साथ एक आईडीई की आवश्यकता नहीं होनी चाहिए।

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


जवाब के लिए धन्यवाद। आप दूसरों के साथ सहमत हो रहे हैं जो कहते हैं कि "चतुर" का मतलब यह नहीं है कि मैंने क्या सोचा था।
लैरी कोलेमन

1

मैं चालाक हूं, लेकिन मैं सुरुचिपूर्ण होने का प्रयास करता हूं ।

अब ऐसा कोड विकसित करें कि दूसरे प्रयास न करें और बाद में टालें


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

सुरुचिपूर्ण: सरल और चालाक। @DerekLitz +1 cromulent के लिए कुछ भी।
केवपी

1

यह मेरे अनुभव और अन्य उत्तरों के आधार पर इस मुद्दे की मेरी समझ है:

  1. कोड जिसने लिखने में चतुराई ली है, लेकिन पठनीय है और बनाए रखने के लिए हानिकारक नहीं है। हालांकि, अधिकांश डेवलपर्स उस तरह के कोड को "चतुर" नहीं कहेंगे; वे "सुरुचिपूर्ण" जैसे एक अलग शब्द का उपयोग कर सकते हैं। इस तरह के कोड मौजूद हैं या नहीं इस बारे में कुछ बहस हो सकती है।
  2. उत्पादन कोड जिसे भाषा के साथ परिचित एक अनुभवी डेवलपर द्वारा भी समझने के लिए महत्वपूर्ण समय और प्रयास की आवश्यकता होती है, "चतुर" और सभी द्वारा हानिकारक माना जाता है।
  3. उत्पादन कोड जिसे अनुभवहीन डेवलपर्स द्वारा महत्वपूर्ण समय और प्रयास की आवश्यकता होती है, कुछ लोगों द्वारा हानिकारक माना जाता है। मैंने जवाबों को किसी भी तरह से देखा है, और मैंने डेवलपर्स के साथ काम किया है जिन्होंने स्पष्ट रूप से कहा है कि वे सब कुछ "सबसे कम आम भाजक" रखना पसंद करेंगे।

आधुनिक पश्चिमी संस्कृति की संपूर्णता एलसीडी है, मुझे लगता है कि प्रोग्रामिंग का अर्थ बहुत अधिक होना है; अच्छा नही।
परिक्रमा

@ जुगाली करना: हाँ, लेकिन तुरंत संतुष्टि मत भूलना।
लैरी कोलमैन

मुझे आपके अनुभव पसंद हैं। यह दुखद है कि लोग ज्ञान और समझ को साझा करके पुनरावृत्ति सुधार और एक दूसरे में निवेश करने के लिए प्रयास नहीं कर रहे हैं। इसके बजाय वे हमें एक पहिया पर cogs होना चाहिए ताकि समय आने पर हमें आसानी से बदला जा सके। ऐसा करके हम प्रगति को बाधित कर रहे हैं। हम खुद को छोटा भी बेच रहे हैं ...
डेरेक लिट्ज

1

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

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


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

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

1

इस संदर्भ में "चतुर" का अर्थ है "अपने स्वयं के भले के लिए बहुत चतुर", अर्थात ऐसा कुछ जो अब काम करता है लेकिन बाद में समझने और बदलने के लिए एक बुरा सपना होगा।

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


0

मैं सरल समाधान पसंद करता हूं, मुझे वास्तव में रूबी रास्ता पसंद है। जब आप उदाहरण के लिए सूची पर पहले 2 तत्वों का योग करना चाहते हैं। सबसे पहले आपने सूची को कट करने के लिए इसका आकार = 2 है और फिर आप इसे योग करते हैं।

मुझे याद है कि एक बार मैंने 3 के बजाय 1 सूची का उपयोग किया था और एक बड़ा कार्य बनाया था जिसे बनाए रखना / बदलना बहुत कठिन था।

आज की दुनिया में हमें प्रदर्शन के लिए कोड स्पष्टता का त्याग करने की आवश्यकता नहीं है (सी ++ को छोड़कर, उनके पास नहीं है, लेकिन वे करेंगे)।


0

आमतौर पर जब आपको कोड में एक समस्या को हल करने के लिए 'चतुर' होने की आवश्यकता होती है। यदि कोई वर्कअराउंड और बहुत सीधा नहीं है, तो आपको कुछ शर्तों को मानने पर बहुत सारे भ्रमित चेहरे या अन्य अजीब दुष्प्रभाव मिलेंगे (जो कोड लिखने के समय 100% सही हो सकते हैं)

इस प्रकार चालाक == भ्रामक == बुरा :( लेकिन यह भी भयानक के रूप में मैं उन्हें सीमित समस्याओं के व्यावहारिक समाधान के लिए इस्तेमाल किया।


0

संदर्भ और आसान समझ के लिए पुन: उद्धरण:

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

ब्रायन कार्निघन ने यहां जो लिखा है वह स्पष्ट रूप से दृढ़ संकल्प को संदर्भित करता है, और उन्होंने गलती से चतुर शब्द का इस्तेमाल किया।

"डिबगिंग पहले स्थान पर कोड लिखने के मुकाबले दोगुना कठिन है। इसलिए, यदि आप कोड को यथासंभव [दोषपूर्ण] लिखते हैं, तो आप परिभाषा के अनुसार हैं, न कि इसे डिबग करने के लिए पर्याप्त स्मार्ट।"

कनवल्शन:

A thing that is complex and difficult to follow.

चालाक:

Showing intelligence or skill; ingenious

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

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

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

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

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

TODO मैं कुछ संदर्भों का हवाला देना चाहूंगा लेकिन मैं संदर्भों के अभाव को भी जानकारी साझा करने की अपनी क्षमता को बाधित नहीं करने देना चाहूंगा, इसलिए मैं अपनी जानकारी के स्रोतों के रूप में जो कुछ भी याद रखता हूं, उसका तुरंत हवाला दूंगा और शायद मुझे वास्तविक जानकारी मिल जाएगी दिन (या आप इसे मेरे लिए पा सकते हैं! :)

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

अपने स्वयं के उद्धरण जोड़ने के लिए स्वतंत्र महसूस करें! इसके अलावा, मेरे पाठ में अल्पविराम जोड़ने के लिए स्वतंत्र महसूस करें। मैंने काफी समय में अंग्रेजी में अल्पविराम के उपयोग के अपने ज्ञान को ताज़ा नहीं किया है ...


-1

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

यह कोई चालाकी नहीं है। यह एक ज्ञान है।


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

@confusedGeek काफी सही है, आप अज्ञानता पर रेखा कहाँ खींचते हैं?
कक्षा

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

@confusedGeek ऐ, समझदार लगता है। लिटमस टेस्ट संभवतया, उसी कैलिबर का एक डेवलपर है जो खुद को आसानी से समझ सकता है कि आपने क्या किया है। यदि नहीं और एक आसान तरीका है, तो इसे बदलने की आवश्यकता है। कभी-कभी आसान तरीका नहीं होता है।
9

-1। सबसे कम आम भाजक के लिए कोड न करें। अनावश्यक जटिलता खराब है, लेकिन अगर कुछ चालाकी कोड को काफी अधिक DRY बना देती है, तो यह इसके लायक हो सकता है।
dsimcha

-1

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

एक चतुर डेवलपर एक अच्छी बात है।

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

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


"बीटिंग्स जारी रहेगा जब तक कि मनोबल में सुधार नहीं होता"
gnat

@gnat मतलब? चीजों को थोड़ा साफ करने के लिए; मैं डेवलपर्स के रूप में कुछ मजबूर होने के लिए अनुशासन नहीं लेता हूं। यह एक अच्छा व्यक्तित्व गुण है। एक जिसे आमतौर पर स्मार्ट लोगों द्वारा सॉफ्टवेयर बनाए रखने के कुछ समय बाद विकसित किया जाता है। समस्या चतुर लोगों के साथ आती है जो कि अनुचर स्थिति में पर्याप्त नहीं हैं और दूसरों को खोजने के लिए हर जगह चतुर बम छोड़ते हैं।
डेकाटेरोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.