मैं एक अनुभवी डेवलपर हूं, लेकिन कई कोड समीक्षाएं नहीं की हैं। मुझे पायथन में लिखे गए कोड की समीक्षा करने के लिए कहा जा रहा है लेकिन मैं पायथन को नहीं जानता।
क्या मुझे किसी ऐसी भाषा में कोड की समीक्षा करने का कोई मतलब नहीं है जो मैं नहीं जानता?
मैं एक अनुभवी डेवलपर हूं, लेकिन कई कोड समीक्षाएं नहीं की हैं। मुझे पायथन में लिखे गए कोड की समीक्षा करने के लिए कहा जा रहा है लेकिन मैं पायथन को नहीं जानता।
क्या मुझे किसी ऐसी भाषा में कोड की समीक्षा करने का कोई मतलब नहीं है जो मैं नहीं जानता?
जवाबों:
कोई मतलब? हाँ। यहां तक कि अगर आप एक प्रोग्रामिंग भाषा के शब्दार्थ के बारे में कुछ नहीं जानते हैं, तब भी आप अक्षर पढ़ सकते हैं और असंगत स्वरूपण, लापता टिप्पणियां, बुरी तरह से चुने गए पहचानकर्ता, स्पष्ट दोहराव आदि को देख सकते हैं।
बहुत समझदारी, या अपने समय की कीमत चुकाने के लिए पर्याप्त समझदारी ? मुझे यकीन नहीं है। यह आपकी स्थिति, आपकी टीम के वर्कफ़्लो में कोड समीक्षाओं का महत्व, और कई अन्य कारकों पर निर्भर करता है, जिन्हें हम पर्याप्त रूप से मात्राबद्ध नहीं कर सकते हैं।
enumerate
।) मुझे लगता है कि आपकी टिप्पणी इस बात का एक बड़ा उदाहरण है कि जिस भाषा से आप परिचित नहीं हैं, उसकी समीक्षा करने की कोशिश करना आपके लिए सबसे अधिक शैक्षिक होना चाहिए।
कोड समीक्षा स्टैक एक्सचेंज में नियमित योगदानकर्ता के रूप में , मैं उदाहरण के लिए, भाषा-अज्ञेय मुद्दों से पीड़ित बहुत सारे सवालों का सामना करता हूं:
और सूची खत्म ही नहीं होती। हालाँकि, जब मुझे भाषा जानने की आवश्यकता नहीं है, तब भी मैं उन मुद्दों / बिंदुओं की समीक्षा कर सकता हूँ।
हमारे कुछ शीर्ष उपयोगकर्ताओं के पास उन भाषाओं के शीर्ष उत्तर होते हैं जिनका वे या तो सक्रिय रूप से उपयोग नहीं करते हैं, या नहीं जानते हैं। यहां तक कि मेरे शीर्ष दस में से दो भाषाओं में हैं जिन्हें मैं न तो जानता हूं और न ही मेरी मशीन पर संकलित / चला सकता हूं।
मैं यह भी कहूंगा कि यह किसी के छद्म कोड की समीक्षा करने के समान होगा। जब तक आप उन चीजों पर ध्यान दे सकते हैं और उन चीजों पर टिप्पणी कर सकते हैं जिन्हें आप समझते हैं, तो आप ठीक होंगे, और यह प्रासंगिक होगी।
यहाँ नीचे पंक्ति है, मेरी राय में:
पायथन को न जानने की विशिष्ट स्थिति के लिए, मैं विशेष रूप से इससे सावधान रहूंगा। पायथन में बहुत सारे मुहावरे और मानक प्रथाएं हैं जो अच्छे पायथन को बनाते हैं जो कि अन्य भाषाओं में आपकी अपेक्षा से भिन्न हो सकते हैं। (वास्तव में, मुझे लगता है कि पायथन ने जिन चीजों पर जोर दिया है, उन्होंने मेरे कोड को अन्य भाषाओं में बेहतर बनाया है , न कि किसी अन्य तरीके से।) परे PEP8 का एक अच्छा उदाहरण है कि आप पूरी तरह से मानसिकता वाले पायथन को कैसे याद कर सकते हैं।
आइए एक साधारण उदाहरण देखें। यह कोड लें:
f = open('/home/me/something.txt')
try:
content = f.read()
finally:
f.close()
इस कोड के साथ समस्या देखें? यदि आपने पायथन के साथ काम नहीं किया है, तो आप शायद नहीं करते। समस्या यह है कि पाइथन में बहुत पसंदीदा शैली है जो बिल्कुल एक ही काम करती है:
with open('/home/me/something.txt') as f:
content = f.read()
यह एक संदर्भ प्रबंधक है। क्या आप जानते हैं कि वे किसके लिए अच्छे हैं? क्या आप जानते हैं कि एक का उपयोग करना कब उचित होगा? क्या आप जानते हैं कि अपना खुद का बनाना कब उचित होगा? नहीं? तब आप शायद पायथन की समीक्षा करने के लिए तैयार नहीं हैं।
आइए एक और उदाहरण देखें।
def add_fifty(other_list):
result = list()
for i in other_list:
result.append(i + 50)
return result
x = range(10)
y = add_fifty(x)
समस्या देखें? समस्या यह है कि यह विधि पूरी तरह से अनावश्यक है । आपको संभवतः बस एक समझ का उपयोग करना चाहिए, जब ऑपरेशन यह सरल हो:
x = range(10)
y = [i + 50 for i in x]
यदि आप यह नहीं देखते हैं, तो आप पायथन की विशेषताओं और मुहावरों से परिचित नहीं हैं।
उन्होंने आपको पाइथन कोड की समीक्षा करने के लिए कहा होगा क्योंकि आप पाइथन को नहीं जानते हैं । एक प्रबंधन सिद्धांत है कि एक टीम पर "मूर्ख" होना उपयोगी है। मैं आपको एक बुरा नाम नहीं कह रहा हूं :) विचार यह है कि एक टीम समूह के विचार से ग्रस्त हो सकती है और सुरंग दृष्टि विकसित कर सकती है। इससे बाहर निकलने का एक तरीका यह है कि किसी को टीम में शामिल किया जाए, जो टीम के अन्य सदस्यों को "मूर्ख" समझेगा, यानी वह व्यक्ति जो विषय वस्तु नहीं जानता हो। आप अपने आप को सूचित करने के लिए सवाल पूछेंगे, और सवाल एक बिंदु से आएंगे, जो कि टीम के अन्य सदस्यों ने कभी नहीं माना था।
आप पाइथन को नहीं जानते हैं, इसलिए पाइथन कोडर्स के लिए जो आपको साधारण लग सकता है वह आपको अजीब लग सकता है। आप एक सुधार का सुझाव दे सकते हैं जिसे टीम ने कभी नहीं माना था।
कोड समीक्षा अमान्य वर्तनी और गलत स्वरूपण वाले चर की खोज करने के बारे में नहीं है। यदि आप ऐसी चीजों को खोजने के लिए कोड समीक्षा का उपयोग करते हैं, तो अपना समय बर्बाद करना बंद करें और एक उपकरण का उपयोग करें।
कोड की समीक्षा एक नौसिखिया प्रोग्रामर द्वारा डिजाइन में सुधार और सामान्य गलतियों का पता लगाने के बारे में है।
चूंकि मैं सी ++ में कार्यक्रम करता हूं , और मैं अजगर को अच्छी तरह से नहीं जानता, इसलिए मैं पायथन कोड की समीक्षा करने की हिम्मत नहीं करूंगा। हालाँकि मैं जावा कोड की समीक्षा में मदद कर सकता हूं।
आपने यह नहीं बताया कि आप किस भाषा में प्रोग्राम करते हैं, लेकिन मैं यह नहीं देखता कि आप एक कोड रिव्यू में क्या योगदान दे सकते हैं, अगर आपको उस भाषा की जानकारी नहीं है, जिसमें यह प्रोग्राम है।
कोड समीक्षा (वास्तव में खामियों की तलाश के अलावा) एक टीम के सदस्य से दूसरों के लिए कोड जोड़ा या बदला जा रहा है के लिए एक अच्छा परिचय है। यदि आप एक अनुभवी डेवलपर हैं , तो आपको अधिकतर यह समझने में सक्षम होना चाहिए कि क्या चल रहा है।
टीम लीडर के दृष्टिकोण से एक कोड की समीक्षा को देखें: वहाँ कोई है जो समझता है कि आवेदन क्या करना चाहिए (व्यापार तर्क), वहाँ कोई है जो समझता है कि कोड कर रहा है (कार्यान्वयन तर्क), और संभवतः कई अन्य लोग वहाँ जो एक विचार है कि कैसे सब एक साथ फिट बैठता है की जरूरत है।
आपको निश्चित रूप से एकमात्र समीक्षक नहीं होना चाहिए , लेकिन समीक्षकों में से एक होने के लिए आपके बहुत सारे अच्छे कारण हैं । भाषा को न जानना बहुत सारे सवालों के लिए एक बाधा नहीं है जो एक कोड समीक्षा में जवाब देने की आवश्यकता है। एक उदाहरण के रूप में, मैं इस साइट पर C # टैग में शीर्ष 20 उत्तरदाताओं में से एक हूं, और मैंने C # में हैलो दुनिया को संकलित नहीं किया है।
कुछ विशेषज्ञता आप भाषा जाने बिना साझा कर सकते हैं:
नए उत्पाद पर तेजी लाने के लिए यह एक अच्छा तरीका है। मैं अभी एक नई टीम में शामिल हुआ, जहाँ मुझे पता है कि भाषाएँ काफी अच्छी तरह से उपयोग की जाती हैं, लेकिन डोमेन को नहीं जानते हैं। कोड समीक्षाओं में भाग लेने से मुझे डोमेन पक्ष को बेहतर ढंग से सीखने में मदद मिली है, भले ही मैं अभी तक उन लाइनों के साथ ज्यादा योगदान नहीं दे पाया हूं।
आपके मामले में, नई भाषा के मुहावरों को सीखने का यह एक अच्छा तरीका होगा, क्योंकि आप अन्य समीक्षकों की टिप्पणियों को छोड़ते हुए देखते हैं। ये ऐसी चीजें हैं जो किसी भी अन्य तरीके से सीखना बहुत मुश्किल है, क्योंकि आपका दुभाषिया परवाह नहीं करता है कि आपका कोड पाइथोनिक है या नहीं।
यह एक जीत की स्थिति हो सकती है। मैं यह कहना चाहूंगा कि आप एक विशेष रूप से मूल्यवान समीक्षक हो सकते हैं क्योंकि आप एक पायथन कुंवारी हैं, जो ज्ञान के अभिशाप से प्रभावित नहीं हुई हैं ।
इसे इस तरह से सोचें: यदि कोड पर्याप्त स्पष्ट है कि एक पायथन कुंवारी भी इसे समझ सकता है, तो यह अच्छा कोड होना चाहिए। जिन भागों को समझने में आपको परेशानी होती है, वे प्रत्यावर्तन या बेहतर टिप्पणी के लिए उम्मीदवार हो सकते हैं।
जाहिर है, यह आपके लिए भी फायदेमंद होगा, क्योंकि आप जाते ही एक नई भाषा चुन रहे होंगे। (उम्मीद है, आपके द्वारा दिया गया कोड सीखने के लिए एक अच्छा उदाहरण है।) इस व्यवस्था को विशेष रूप से पायथन के लिए काम करना चाहिए, एक ऐसी भाषा जिसमें "निष्पादन योग्य छद्मकोश" होने की प्रतिष्ठा है। यदि आप एक अनुभवी डेवलपर हैं, तो आपको पायथन प्रोग्राम के बारे में समझने में ज्यादा कठिनाई नहीं होनी चाहिए।
कैविएट यह होगा कि आपको भाषा-विशिष्ट गोत्रों से उत्पन्न होने वाली कीड़े की उम्मीद नहीं होगी । लेकिन बग-खोज कोड समीक्षाओं का एकमात्र उद्देश्य नहीं है। यदि और कुछ नहीं, तो आप अपने सहकर्मी के कोड में किस तरह के सामान के बारे में जानते हैं, बस ज्ञान हस्तांतरण में भाग लेंगे।
मुझे एक बार एक परियोजना का ऑडिट करने के लिए कहा गया था जो एक उपठेकेदार द्वारा की जा रही थी और इसमें गंभीर प्रदर्शन समस्याएं थीं। मैंने काफी जल्दी से स्थापित किया कि महत्वपूर्ण कारक एक एकल पर्ल मॉड्यूल था। मैं पहले कभी पर्ल के पार नहीं आया था और हमारे पास संगठन में कोई नहीं था जो इसे जानता था, इसलिए मैंने इसे स्वयं समझने की कोशिश की। मुझे विस्तार के बारे में समझने में कभी मदद नहीं मिली, लेकिन यह बहुत स्पष्ट था कि जो एल्गोरिथ्म इसका उपयोग कर रहा था वह डेटा आकार में द्विघात था और यह सभी परेशानी का कारण था। तो हाँ, एक ऐसी भाषा में कोड पढ़ना जिसे आप पूरी तरह से नहीं समझते हैं वह निश्चित रूप से उत्पादक हो सकती है। बोनस यह है कि आप इसके बारे में सीखते हुए नई तरकीबें सीखते हैं।
कुछ अवलोकन:
1) यदि आप एक अनुभवी डेवलपर हैं, तो आप पायथन (या कम से कम जितना आपको पता होना चाहिए) उठा लेंगे, बस इसके साथ काम करके। यह "करने से सीखने" का मामला होगा। यह पहली बार में कठिन होगा, लेकिन जैसे ही आप भाषा चुनेंगे, आपको आसानी होगी। इसे दूसरी भाषा सीखने का अवसर समझें (लोग अक्सर "विदेशी" भाषाओं को "विसर्जन" के माध्यम से सीखते हैं।
2) एसई साइटों पर कई मूल्यवान लोग हैं जो "गैर-तकनीकी" हैं, लेकिन व्याकरण, संचार और तर्क के साथ कुशल हैं। ऐसे लोग विषयों के लिए एक "ताज़ा नज़र" लाते हैं, और कई "नो ब्रेनर" को ठीक करते हैं जो दूसरों को याद करते हैं, क्योंकि वे सामग्री में "बंधे" हैं। आपको अपने गैर "तकनीकी" (यानी गैर पायथन) कौशल जैसे तर्क और समग्र प्रोग्रामिंग प्रेमी के लिए सलाह दी जा रही है।
और यदि आपने बहुत सारी कोड समीक्षा नहीं की है, तो लगभग किसी भी कोड की समीक्षा का अनुभव आपको एक डेवलपर के रूप में मदद करेगा। यह आपके कौशल और जरूरतों और टीम के बीच एक अच्छे मैच की तरह दिखता है।
यह इस बात पर निर्भर करता है कि समीक्षा का लक्ष्य क्या है; यानी क्या तुम मतलब प्रभावी ।
आप अभी भी कुछ समस्याओं का पता लगाने में सक्षम होंगे। यदि आप वे सब के साथ समीक्षा करने के लिए मिल गए हैं और वे बस उम्मीद कर रहे हैं कि आप इस पर एक नज़र डालते हैं कुछ मदद करता है और संभवतः कुछ पकड़ता है, तो सुनिश्चित करें। संरचना की कई अवधारणाएं भाषाओं के बीच समान हैं। एक विशेष रूप से टिप्पणी की समीक्षा करने में सक्षम हो रहा है। यह पर्याप्त रूप से टिप्पणी की जानी चाहिए कि एक प्रोग्रामर उस विशेष भाषा का नहीं है जो अभी भी हो रहा है कि वह अच्छा अनुभव प्राप्त करने में सक्षम होना चाहिए। यदि नहीं ... तो आप उन्हें बता सकते हैं कि उनकी टिप्पणी में कहां कमी है। यदि यह अच्छी तरह से टिप्पणी की गई है ... तो आप वास्तव में क्या चल रहा है के कोड को पढ़ने के बजाय जो चल रहा है उसके एनोटेशन के माध्यम से उनकी संरचना की काफी समीक्षा करने में सक्षम होना चाहिए।
लेकिन आप कई अन्य समस्याओं का पता लगाने की संभावना नहीं रखेंगे। इसलिए यदि वे आपकी समीक्षा करने का इरादा रखते हैं कि यह एक अच्छी तरह से बनाया / काम करने योग्य कार्यक्रम है या नहीं, तो वे निराश होंगे।
वह परिणाम आपके द्वारा किए जाने के समय के लायक है या नहीं, यह काफी हद तक परियोजना पर निर्भर करता है।