मैं अपने स्वयं के कोड की समीक्षा कैसे करूं? [बन्द है]


177

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


34
मुझे यकीन है कि नहीं कर रहा हूँ आप कर सकते हैं, कम से कम प्रभावी रूप से नहीं - आप भीड़ कर सकते हैं पर एक समीक्षा टीम स्रोत codereview.stackexchange.com यदि आपका कोड हालांकि मालिकाना नहीं है
जे।

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

136
अपने स्वयं के कोड की समीक्षा करना आसान है। एक टुकड़ा कोड लिखें। जब आप अन्य सॉफ़्टवेयर सीखना और विकसित करना जारी रखते हैं, तो 2 सप्ताह / महीने / वर्षों तक दूर रहें। उस टुकड़े पर वापस आएं और समझने की कोशिश करें कि कोड क्या कर रहा है। जब आप सोचते हैं कि आप जानते हैं कि आपने कुछ सीखा है: "किस तरह के बेवकूफ ने यह लिखा है?"।
युरी जुबेरव

6
@YuriyZubarev लेकिन क्या होगा अगर आप हफ्तों / महीने / वर्षों तक इंतजार नहीं करना चाहते हैं?
अनातोलीजी

12
आप एक परिवर्तित मन स्थिति में अपने कोड की समीक्षा कर सकते हैं। या आप एक परिवर्तित मन स्थिति में कोड कर सकते हैं और अपने सामान्य उबाऊ स्व के लिए एक कोड समीक्षा प्रतिनिधि कर सकते हैं।
SK- तर्क

जवाबों:


92

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

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

यह तब उपयोगी है जब आप दूसरों के कोड की भी समीक्षा कर रहे हों


3
चेक-लिस्ट के बारे में, कल्पना करना एक सुपर उपयोगी है।
वेन वर्नर

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

57

कोड समीक्षा स्टैक एक्सचेंज साइट पर एक नज़र डालें । यह उन परियोजनाओं से कोड साझा करने के लिए है जो आप सहकर्मी समीक्षा के लिए काम कर रहे हैं :

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

यदि आप निम्नलिखित क्षेत्रों में अपनी परियोजना से कोड के एक विशेष कार्य टुकड़े पर प्रतिक्रिया की तलाश कर रहे हैं ...

  • सर्वोत्तम प्रथाओं और डिजाइन पैटर्न का उपयोग
  • सुरक्षा मुद्दे
  • प्रदर्शन
  • अप्रत्याशित मामलों में सुधार

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


2
यह प्रश्न "मेरे कोड की समीक्षा कैसे करें" का एक उत्कृष्ट उत्तर है, और सामान्य रूप से एक अच्छी सलाह है (मैं निश्चित रूप से ऐसा करूंगा) - लेकिन फिर भी थोड़ा अपमानजनक।
मैक्स यांकोव

5
मुझे आमतौर पर 5 शब्द का उत्तर पसंद नहीं है, लेकिन यह सिर्फ इतना सही है
maple_shaft

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

3
समीक्षा में वास्तविक मूल्य कोड के टुकड़े हो रहे हैं, हालांकि आप कभी भी किसी भी समस्या को पेश नहीं करेंगे और गैर-स्पष्ट और स्वयं को समझाने या यहां तक ​​कि तार्किक रूप से सही के रूप में हाइलाइट किया जाएगा । आप स्निपेट को पोस्ट नहीं कर सकते हैं code reviewयदि आप पहले से जानते नहीं हैं कि यह एक समस्याग्रस्त है।
ZJR

3
@ZJR, क्या आपकी परियोजनाओं में कोड की 100% समीक्षा की गई है? यदि हाँ, तो आपके इंजीनियरों के पास बहुत अधिक खाली समय है। आपकी दूसरी टिप्पणी के रूप में, मुझे लगता है कि आपको लगता है कि एक कोड में एक कोड की समीक्षा के लिए पूछने में समस्याएं नहीं दिखती हैं।
B40овиЈ

29

मैंने कई अलग-अलग व्यक्तियों को अपने सिर में विकसित किया है। उनमें से एक प्रोग्रामर भी नहीं है! हम बातचीत कर रहे हैं, नवीनतम समाचारों पर चर्चा कर रहे हैं और एक दूसरे के कोड की समीक्षा कर रहे हैं।

मैं दृढ़ता से अपने दृष्टिकोण की सिफारिश करता हूं।

ps वह मजाक नहीं कर रहा है।


27
मेरे नाम बिल, जेफ, बॉब और एलिस हैं और हम इस संदेश को स्वीकार करते हैं।
माइकल के

22

मैं व्हाइट jk-s राय से सहमत हूं कि एकल-व्यक्ति समीक्षा 2 व्यक्ति समीक्षा के रूप में कुशल नहीं है। हालाँकि आप इसे सर्वश्रेष्ठ बनाने की कोशिश कर सकते हैं:

अल्पकालिक समीक्षा (कोड के उत्पादन के तुरंत बाद)

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

इससे पहले कि मैं जाँच करूँ कि मैं अपने कोड में क्या बदल चुका हूँ और तुलना करता हूँ:

  • चर / विधि / वर्गनाम अभी भी प्रतिबिंबित करते हैं कि उनका उपयोग किस लिए किया जाता है?

दीर्घकालिक समीक्षा (कोड के उत्पादन के 6 महीने बाद)

मैंने खुद से पूछा:

  • क्या मैं एक सेंसेंस में वर्णन कर सकता हूं कि क्लास / मेथड / वैरिएबल क्या करता है?
  • अलगाव में एक वर्ग का उपयोग करना कितना आसान है (अन्य वर्गों को सफ़ेद करना) या इसके लिए एक अयोग्य लिखना?

4
अल्पकालिक समीक्षा सुझाव के लिए +1। समय में विभिन्न बिंदुओं के बीच सभी परिवर्तनों को देखने के लिए गिट का उपयोग करना वास्तव में कोड को साफ करने में मदद कर सकता है।
सिंह

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

मैं बीच में कुछ करने की कोशिश करता हूं: लगभग एक महीने में अपने कोड की समीक्षा करें। मुझे 6 महीने की समीक्षा भी पसंद है।
डेविड जी

18

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

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

यह कहा गया है कि किसी विषय की सच्ची महारत किसी और को सिखाने की क्षमता है। प्रलेखन के साथ आप किसी और को अपना कोड सिखाने की कोशिश कर रहे हैं।


15

कोड डिबगिंग तकनीक में इस डिबगिंग तकनीक को ट्रांसफ़ॉर्म करें: http://en.wikipedia.org/wiki/Rubber_duck_debugging

अवधारणा कोड के माध्यम से काम करने के लिए एक उचित मानसिकता में डालने के लिए अद्भुत काम करती है जैसे कि यह नया था।


3
मेरा मानना ​​है कि बतख तकनीक का स्वतंत्र रूप से कई साइटों पर आविष्कार किया गया है; यहाँ इसके बारे में एक महान कहानी है: hwrnmnbsol.livejournal.com/148664.html
रसेल बोरोगोव

10
इन दिनों, मेरा रबड़ बतख स्टैक एक्सचेंज का एक प्रश्न है। एक अच्छा प्रश्न लिखने की इच्छा चालबाजी करती है।
केविन रीड

बहुत बढ़िया सलाह। यह बेहतर है क्योंकि मेरे पास पहले से ही मेरी डेस्क पर एक रबर बतख है (यह मेरे गेम पात्रों में से एक के लिए एक मॉडल के रूप में यहां है, लेकिन मुझे लगता है कि यह एक आईटी सलाहकार की अतिरिक्त नौकरी को बुरा नहीं लगेगा)।
मैक्स यांकोव

5
@KevinReid, मुझे परित्यक्त एसई पदों पर कुछ आँकड़े देखना अच्छा लगेगा - विशेष रूप से लोगों को जो 60 से अधिक दिनों से टाइप कर रहे हैं। मुझे पता है कि मैंने खुद कम से कम 5 बार ऐसा ही किया है।
वेन वर्नर

वाह! मुझे नहीं पता था कि यह "एक बात" थी। मैंने अभी ऊपर टिप्पणी की है कि मेरे कंप्यूटर साइंस प्रोफेसर ने दशकों पहले हमारे पहले व्याख्यान के दौरान यह सिफारिश की थी। उसने एक बिल्ली की सिफारिश की, लेकिन मुझे लगता है कि ईई रबर बतख करेगा। एक बात पक्की है, यह मानवजनित साइडकिक के बिना काम नहीं करता है :-)
Mawg

13

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

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

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


मुझे नहीं लगता कि आपके अपने कोड की समीक्षा करना संभव है
Bћови

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

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

3
सही मानसिकता में आना वास्तव में महत्वपूर्ण है। मुझे लगता है कि यह मदद करता है अगर मैं वास्तव में कोड का प्रिंट आउट करता हूं और एक मार्कर पेन के साथ कागज पर गुजरता हूं। फिर मैं समीक्षा करते समय कुछ भी नहीं बदल सकता (जो मुझे कोडिंग मोड में जाने से रोकता है) और आसानी से कागज पर टिप्पणियों और आंदोलन तीरों को स्क्रिबल कर सकता है।
लियो

इसका मतलब है कि पुराने कोड की समीक्षा, और नया कोड नहीं। उसके लिए आपको अनुभव प्राप्त करने की आवश्यकता है, जिसमें लंबा समय लग सकता है।
B:56овиЈ

9

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

यहाँ मेरे कुछ वर्षों के अनुभव के सुझाव दिए गए हैं:

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

बस एक FYI करें - ये दिशानिर्देश कुछ साल पहले Oracle में सिफारिशों का हिस्सा थे जब मैं वहां काम कर रहा था, जहां कोड परीक्षण में जाने से पहले उद्देश्य "अपस्ट्रीम" कीड़े को पकड़ना था। इसने बहुत मदद की, हालाँकि इसे बहुत सारे डेवलपर्स ने उबाऊ काम माना था।


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

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

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

8

समीक्षाओं के लिए व्यक्तिगत सॉफ़्टवेयर प्रक्रिया तकनीक उपयोगी हो सकती है, हालांकि यह आपके काम और उत्पादों की गुणवत्ता के बारे में ऐतिहासिक डेटा होने पर निर्भर करती है।

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

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

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


7

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

और सबसे पहले, आपके पास यह सुनिश्चित करने के लिए साधन होना चाहिए कि आपका कोड आवश्यकताओं से मेल खा रहा है, और दूसरा यह कि आपका कोड बदलने में अपेक्षाकृत आसान होगा यदि आप बाद में निर्णय लेते हैं कि आपको कुछ गलत लगा। मेरा सुझाव निम्नलिखित कारणों से व्यवहार प्रेरित विकास दृष्टिकोण लागू करना होगा :

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

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

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


5

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

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


5

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

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

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


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

5

इसे 3 महीने दें, फिर वापस जाएं और अपना कोड देखें। मैं तुमसे वादा करता हूँ, अगर तुम इसके साथ कुछ गलत नहीं पा सकते (या सवाल यह है कि यह कबाड़ किसने लिखा है!) तुम मुझसे बेहतर आदमी हो!


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

5

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


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

4

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

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

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


+1 यह "अपनी बिल्ली को समझाना" दृष्टिकोण के साथ जाएगा। जब आप एक सहकर्मी का उपयोग नहीं कर सकते हैं तो आपके मस्तिष्क के विभिन्न हिस्सों का उपयोग करना सहायक हो सकता है।
BMitch

प्लस फॉर शिट की
मग

3

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

लेकिन सबसे अच्छा अभ्यास होगा, स्वयं की समीक्षा करना और बाद में प्रतिष्ठित भूमिकाओं के साथ समीक्षा के लिए कम से कम दो अन्य लोगों को शामिल करना।


3

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

http://en.wikipedia.org/wiki/Software_inspection

स्ट्रॉस और एबेनाऊ द्वारा "सॉफ़्टवेयर इंस्पेक्शन प्रोसेस" के लिए कुछ किताबें भी लिखी गई हैं, जैसे Google।

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

http://www.javaspecialists.eu/


0

कोड समीक्षा के लिए सभी सिफारिशों के अलावा, आप अपने कोड के लिए पहले स्तर की पवित्रता करने के लिए PMD और findBug जैसे उपकरणों का उपयोग कर सकते हैं।


0

यह वास्तव में अभी तक एक उत्तर में नहीं रखा गया है (लेकिन मौजूदा उत्तर के लिए एक टिप्पणी के रूप में जोड़ा गया है)

एक अच्छी रातों की नींद के बाद अपने कोड की समीक्षा करें, उदाहरण के लिए उस दिन की समीक्षा करें जो आपने पिछले दिन लिखे कोड की समीक्षा करके किया था।

यह निश्चित रूप से आपको एक टीम का सामूहिक अनुभव नहीं देगा, लेकिन यह आपको एक नए दृष्टिकोण से कोड की समीक्षा करने देगा।

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

जब हम सोते हैं, तो मस्तिष्क वास्तव में उन समस्याओं पर काम करना बंद नहीं करता है जो हमारे पास हैं, इसलिए आप वास्तव में वहां समाधान के साथ आ सकते हैं, हालांकि वे समाधान कभी-कभी खुद को अजीब तरीके से पेश कर सकते हैं

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