2008-10-02 13 views

उत्तर

12

अच्छा अमूर्त चिंताएं की

+0

वहां बहुत सारे बुरे, रिसाव अबास्ट्रक्शन हैं। शायद किसी को अवशोषण से दूर रहना चाहिए? –

+1

फिर फिर, खराब, लीकी अबास्ट्रक्शन और अच्छे अबास्ट्रक्शन दो अलग-अलग चीजें हैं :) –

26

पृथक्करण (प्रत्येक विधि एक बात करता है) - इस स्पेगेटी कोड बंद हो जाता है।

संपादित करें: (एश की टिप्पणी के जवाब में) रखरखाव की कुंजी जल्दी से यह पता लगाने में सक्षम है कि कोड क्या कर रहा है और कार्य को पूरा करने के लिए परिवर्तन कैसे करें।

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

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

+0

बिल्कुल, हालांकि मुझे लगता है कि यह आपके कोड में किसी नए को अनुमति देने के लिए बेहतर है कि "क्या और कहाँ है"। जब आपको परिवर्तन करने की आवश्यकता होती है, ऑर्थोगोनलिटी भी परिवर्तन को कम मुश्किल बनाती है। – Ash

+0

सत्य - एक निश्चित परिणाम प्राप्त करने के लिए क्या परिवर्तन करने की आवश्यकता है इसके बारे में रखरखाव सब कुछ है। चिंताओं का पृथक्करण यह पता लगाने के लिए बहुत आसान बनाता है। –

+0

एक तरह से मैं चिंता का पृथक्करण व्यक्त करना चाहता हूं "एक वर्ग में कई विधियों और कई वर्गों, बल्कि एक बड़ी विधि के लिए हमेशा बेहतर होता है।" –

6

अच्छा विधि के नाम

24

स्वचालित इकाई परीक्षण।

यदि आप स्वचालित परीक्षणों के साथ इसे कवर करते हैं तो आप धीरे-धीरे कोड के डिज़ाइन को रीफैक्टरिंग के माध्यम से बदल सकते हैं जो आपको बताता है कि जब आप मौजूदा कार्यक्षमता को तोड़ रहे हैं। स्वचालित परीक्षण कोड को कम जोखिम भरा बनाता है।

+0

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

+0

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

+0

बिल्कुल। टिप्पणियां बेहद महत्वपूर्ण हैं लेकिन स्वचालित परीक्षण बेहतर हैं। टेस्ट बेसबॉल चमगादड़ के साथ टिप्पणियों की तरह हैं। – JaredPar

8

अच्छा अपफ्रंट डिज़ाइन। खराब डिजाइन को बचा नहीं सकता है।

0

अच्छी टिप्पणियां भी बनाए रखने के लिए सबसे खराब स्पेगेटी कोड 10x आसान बना सकती हैं।

+0

सबसे खराब स्पेगेटी कोड अनजान है। – Chris

5

any of this stuff! मत करो हालांकि हंसी के लिए रोडी ग्रीन के लिए धन्यवाद।

9

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

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

56

अन्य लोगों को पढ़ने के लिए इसे लिखें। इसका मतलब है अच्छे नाम, अच्छी टिप्पणियां, और सरल बयान का संयोजन।

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

अच्छी टिप्पणियां लंबे समय तक नहीं होनी चाहिए, लेकिन उन्हें सहायक होना चाहिए।

भी सुसंगत रहें। अपने कोड में शैलियों को मत बदलें। उदाहरण के लिए नामकरण शैलियों को एक सेक्शन में अगले अनुभाग में न बदलें।

+0

प्रश्न एक चीज़ के लिए पूछा गया। आपने 3 दिया: पी –

+1

मैं हमेशा एक अधिक प्राप्तकर्ता था। –

+8

अच्छा बिंदु लेकिन यह सिर्फ "अन्य लोगों को पढ़ने के लिए" लिखने के बारे में नहीं है। एक साल या उससे अधिक के बाद अपने कोड को समझने का प्रयास करें। मुझे लगता है कि आप एक सालों में इन "अन्य लोगों" में से एक हैं। – Ash

0

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

3

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

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

http://mindprod.com/jgloss/unmain.html

मैं वास्तव में कंपनियों में काम किया है कि वहाँ में वर्णित बातों में से कुछ पर "मानकीकृत"। आपको लगता है कि उस सामान का अधिकांश सामान्य ज्ञान है, लेकिन आप आश्चर्यचकित हो सकते हैं।

8

रिलीज के बाद एक या दो साल के लिए आपने जो सॉफ्टवेयर लिखा है, उसके लिए 1 या 2 स्तर के समर्थन पर होना।

मेरा विश्वास करो, मैं खुद वहां रहा हूं। एक "समय" में मुझे अपने स्वयं के कोड को बनाए रखने या बढ़ाने के लिए "भय" हमेशा रखरखाव में सुधार के लिए एक महान प्रेरक है।

2

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

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

0

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

यदि आपने दो के लिए पूछा, तो दूसरा निश्चित रूप से यूनिट परीक्षण होगा। यह दोनों के बीच एक कठिन विकल्प था।

1

मुझे परीक्षण योग्य कोड (चेकआउट Google परीक्षण ब्लॉग) लिखने के लिए यह कई कारकों का एक संयोजन है, जैसा कि ऊपर बताया नहीं "एक सबसे महत्वपूर्ण कारक" वहाँ है बेहतर maintainable कोड

5

है।

अब, इनमें से अधिकतर नियमों को इसमें शामिल किया जा सकता है: "बाद में इसे पढ़ने के लिए अपना कोड लिखें"।
या एक मजेदार अभी तक अच्छी सलाह देने के लिए: "अपना कोड लिखें जैसे कि यह एक जिज्ञासा पागल द्वारा बनाए रखा जाना चाहिए जहां आप रहते हैं।" ...

0

एक सतत कोडिंग शैली। विधि और परिवर्तनीय नामकरण सम्मेलनों, टिप्पणियों के लिए शैली और प्रारूप, और यहां तक ​​कि मॉड्यूल/फ़ाइल नामकरण जैसी चीजें।

1

मैंने पहले ही मैट के जवाब "अच्छा अमूर्तता" का वोट दिया लेकिन मैं कुछ जोड़ना चाहता था।

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

यदि आप अपना कोड रखरखाव योग्य रखना चाहते हैं, तो अपने समाधान को अवशोषण के उचित स्तर के बारे में बताएं और कोड को उस स्तर तक परिशोधित करें ताकि यह स्पष्ट हो कि यह क्या करता है।

0

मैं कुछ अन्य लोगों के साथ जाऊंगा, ABSTRACTION। यह कुछ सॉफ़्टवेयर पैटर्न को समझने में भी मदद करता है, जीओएफ उस तरह की चीजों के लिए शुरू करने के लिए एक अच्छी जगह है।

2

व्हाइटस्पेस के बहुत सारे। - उच्च घनत्व कोड समझना मुश्किल है। यदि आपके पास एक खाली रेखा के साथ 6 से अधिक लाइनें हैं, तो वह समूह शायद एक समेकित विचार/विचार/संचालन नहीं है।

अच्छा चर नाम - व्याख्यात्मक, लेकिन संक्षेप में। विशाल चर नाम छोटे के रूप में खराब हैं।

5

कोड पढ़ें पूर्ण- यह इस बारे में सब कुछ वैरिएबल नामकरण से लेकर वास्तव में बड़ी सामग्री तक कवर करता है और यह सभी आवश्यक है। कोई बात नहीं है।

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

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

अंत में यह, विचारशील होने की कोशिश कर और भविष्य कोड के लिए लेखन का सवाल केवल एक बार लिखा है कि के बाद यह सब रखरखाव है ...

1

छोटे, अच्छी तरह से परिभाषित कार्यों और वर्गों।

अन्य लोगों के विभिन्न कोडिंग सम्मेलनों में उपयोग करना बहुत आसान है, लेकिन अगर सब कुछ एक विशाल वर्ग या समारोह में है, तो मेरा सिर विस्फोट हो जाता है।

3

मैं कहूंगा कि सबसे महत्वपूर्ण कारक DRY है। Glenatron इसे पहले से ही अन्य कारकों के बीच अपने उत्तर पर उल्लेख करें, लेकिन मुझे लगता है कि यह सबसे महत्वपूर्ण है।

2

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

0

मैं पोषणीय कोड लिखने लगता है कि कोड से परे चला जाता [OO के साथ एक भाषा चुनने के रूप में पर हमला बोला भी मदद करता है के लिए विरोध में बनाया]। मेरा मानना ​​है कि यह समझना बेहतर है कि आवश्यकताएं क्या थीं (और इसे किसी भी तरह कार्यात्मक और गैर-कार्यात्मक दोनों दस्तावेज किया गया है) और उसके बाद, एक नया कर्मचारी, जैसा कि कोड में बदल गया है, पेश किया गया है।

अगर कोई जानता है कि कोड ऐसा क्यों हुआ, तो इसे बेहतर बनाने और/या इसे विस्तारित करना आसान हो जाता है।

अधिक तकनीकी चीजों (जैसे एल्गोरिदम) के लिए यह संक्षेप में समझाया गया है (लक्ष्य, सिद्धांत) और फिर कोड और/या पैटर्न कार्यान्वयन के प्रमुख भागों पर टिप्पणी कर रहा है।

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

6

कोड लिखने की प्रवृत्ति है कि कंप्यूटर आपके दर्शक हैं।

कड़ाई से बोलना, यह सच है क्योंकि कोड को काम करना है। लेकिन अगर आप अपने मानव दर्शकों के साथ दिमाग में लिखते हैं, तो बस वह मानसिकता अधिक पठनीय कोड तैयार करने में मदद करती है।

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

1

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

0

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

3

प्रोग्रामिंग प्रदर्शन है; आपको कभी नहीं भूलना चाहिए कि आपका दर्शक कौन है। "कोड जैसे कि आपका कोड बनाए रखने वाला व्यक्ति हिंसक मनोचिकित्सक है जो जानता है कि आप कहां रहते हैं।"

0

मजबूत, समझदार सम्मेलन जो लगातार लागू होते हैं। इंडेक्सिंग शुरू करने के लिए सम्मेलनों की तरह चीजें,

यह बहुत कोड को समझने में आसान बनाता है, क्योंकि आपका सभी कोड सरल तरीके से व्यवहार करेगा।

यह मेरी शीर्ष युक्तियों में से कम से कम एक है।

3
  • रिकार्ड मान्यताओं जब आप उन्हें बनाने - दो दिन बाद आप इन मान्यताओं उठाएंगे के लिए दी गई, लेकिन अगले व्यक्ति जो आपके कोड जरूरी एक ही मान्यताओं नहीं होगा कहना है, और आश्चर्य होगा कि आप क्यों किया जो आपने किया ...

  • लोगों के लिए कोड - कंप्यूटर कुछ भी आपको बताएगा; कोड ताकि इंसान आपके कोड को समझ सकते हैं - जो जानता है कि यह अब से 6 महीने हो सकता है!

1

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

0

शुद्ध कार्य कोड के बारे में तर्क करना अधिक आसान बनाते हैं। सुनिश्चित करें कि आप दुष्प्रभावों को सही ढंग से संवाद करते हैं। (यानी, साइड इफेक्ट आमतौर पर तब किया जाता है जब आप 'परिणाम' नहीं लौटाते हैं। Ie शून्य कार्य।)

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