अगर मेरा एलओसी / दिन अनुपात बहुत अधिक है तो क्या मुझे परेशान होना चाहिए? [बन्द है]


9

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

क्या मुझे परेशान होना चाहिए? क्या यह संकेत है कि मुझे उस सभी कोड को रोकने और समीक्षा करने की आवश्यकता है जो मैं इस तारीख तक लिख रहा हूं और इसे फिर से लिखूं?


आप LOC कैसे माप रहे हैं? क्या यह दृश्य स्टूडियो उत्पन्न कोड को बाहर करता है या नहीं?
जे.के.

मेरे कोड फोल्डर में इस बैश कमांड के साथ: (ढूँढें ./name-* '.cs' -print0 | xargs -0 cat) wc -l
मैक्स यांकोव

होगा लाइनों आप लिख रहे हैं की संख्या के बारे में चिंता नहीं मैं - ठीक है तो संभावना किसी भी उत्पन्न कोड जैसे designer.cs शामिल करने के लिए है कि
जे।

आम तौर पर, हाँ, लेकिन इस विशेष वातावरण (एकता गेम इंजन) के साथ ऐसा नहीं है।
मैक्स यांकोव

1
मैं अधिक जोड़ने से पहले यथोचित रूप से कोड की कई पंक्तियों को हटाने का प्रयास करता हूं। न्यूनतम प्रणाली पर काम करना विकल्प की तुलना में बहुत अधिक सुखद है।
जॉन पूर्डी

जवाबों:


18

LOC संभवतः सबसे अधिक उपयोग की जाने वाली मेट्रिक्स में से एक है, और परिणामस्वरूप कोड गुणवत्ता के अधिक बेकार उपायों में से एक है, और प्रोग्रामिंग प्रयास का एक और भी अधिक बेकार माप है।

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

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

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

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

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

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


1
+1 दिन में 400 लाइनें एक समस्या का संकेत हो सकती हैं, दुर्भाग्य से मुझे लगता है कि यह पता लगाने का एकमात्र तरीका कोड समीक्षा है, जो 1 आदमी टीम
jk

इतने विस्तृत जवाब के लिए धन्यवाद :) मुझे लगता है कि यह पूरी तरह से विषय को कवर करता है।
अधिकतम याँकोव

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

+1 हालांकि आप उन अध्ययनों की ओर संकेत नहीं कर सकते जो दिखाते हैं कि LOC एक खराब मीट्रिक है, ऐसे अध्ययनों को खोजना आसान है जो समस्याओं में चले गए हैं क्योंकि वे LOC का उपयोग मीट्रिक के रूप में करते हैं।
दारमाकर

पूरी तरह से सहमत हैं कि LOC एक बेकार मीट्रिक है। कुछ दिन मैं कोड की सैकड़ों लाइनें लिखता हूं और यह ठीक है। कुछ दिन मैं शून्य शून्य। कुछ दिन मैं सभी कोड हटा दें। :-)
ब्रायन नोब्लुक

5

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

दैनिक एलओसी आपको कुछ भी नहीं बताता है सिवाय इसके कि उस दिन के कार्यों को कोड की 400 लाइनों के साथ पूरा किया जा सकता है।


2

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

दुर्भाग्य से कोड गुणवत्ता के बारे में जानने का एकमात्र तरीका कोड की समीक्षा है, क्योंकि आप एक आदमी टीम हैं यह मुश्किल होगा, भले ही आपने अपने कोड की समीक्षा करने के लिए रोक दिया था (और आप वास्तव में बंद नहीं करना चाहते हैं, ठीक है?) आपकी समीक्षा कर रहे हैं स्वयं का कोड आपके कोड की समीक्षा करने वाले सहकर्मी के रूप में उतना प्रकट नहीं करेगा। मेरा सुझाव है कि किसी और को आपके कोड के कम से कम कुछ समीक्षा करने की कोशिश करें ताकि आप यह बता सकें कि आपका 400 LOC / दिन जिबरिश का मंथन कर रहा है या नहीं। यहां तक ​​कि एक दिन के कोड की एक स्वतंत्र समीक्षा यहां मदद करेगी


1

आप प्रति दिन उत्पन्न LOC की संख्या से परेशान नहीं होना चाहिए।

लेकिन आपको परेशान होना चाहिए:

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

0

LOC उत्पादकता का एक 'आधिकारिक' उपाय है, लेकिन इसके मूल्य के विरुद्ध तर्क लम्बे हो सकते हैं (एक ORM 3 मिनट में कोड की 50,000 पंक्तियाँ उत्पन्न कर सकता है, हालाँकि, यदि डेटाबेस डिज़ाइन गलत है तो वह सभी बिन में जा सकता है)।

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

LOC के बारे में कुछ संदर्भ


लेकिन वह LOC का उपयोग उत्पादकता के उपाय के रूप में नहीं कर रहा है
jk।

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

0

क्या आप कोड-डुप्लिकेट की संख्या भी माप रहे हैं ?

यदि उच्च आउटपुट है क्योंकि आपके पास कोड में बहुत अधिक कॉपी और पेस्ट है तो आपको चिंता करनी चाहिए।

कारण: यदि आपकी कॉपी और पेस्ट-सोर्स में कोई त्रुटि थी, तो यह कॉपी और पेस्ट के सभी उपयोगों को ठीक करने के लिए कठिन और त्रुटि-प्रवण है


-1

यदि आप सुंदर कार्यात्मक कोड में विश्वास करते हैं, तो यह आपका एकमात्र उपाय होना चाहिए

"क्या यह बहता है? क्या यह सुंदर दिखता है?"


3
एकमात्र उपाय? यह कैसे काम करता है? क्या यह काफी तेज है?
जे.के.

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