कोडिंग मानकों के साथ से बचने वाले कीड़े [बंद]


11

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


5
सौभाग्य! प्रोग्रामिंग से संबंधित किसी भी चीज़ के बारे में आंकड़े ढूंढना वास्तव में कठिन है।
विंस्टन एवर्ट

मैंने एक बार कोडिंग मानकों को पढ़ा ... और यह उस कहानी का अंत है। स्टाइलकॉप, दूसरी ओर - मैं इसे हर दिन चलाता हूं।
जॉब

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

जवाबों:


8

अपने स्वयं के कोडिंग मानकों से कीड़े कम नहीं होते हैं। साउंड सॉफ्टवेयर डेवलपमेंट प्रक्रिया के हिस्से के रूप में कोडिंग मानक बग को कम करते हैं।

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


3

कोडिंग "मानक" ... विकास के बहुत सारे क्षेत्र हैं जिन्हें मानकीकृत किया जा सकता है। क्या हम कोडिंग कन्वेंशनों के बारे में बात कर रहे हैं, जैसे मानकों का नामकरण आदि? या हम कुछ गहरी बात कर रहे हैं, जैसे टीडीडी / बीडीडी, सीआई, आदि।

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

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

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

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


3

हर SQL इंजेक्शन भेद्यता एक दोष है जिसे एक कोडिंग मानक के साथ रोका जा सकता था। SQL इंजेक्शन भेद्यता पर आँकड़े उपलब्ध हैं, AFAIK, उपलब्ध हैं।

प्रत्येक बफर अतिप्रवाह भेद्यता को एक कोडिंग मानक के साथ रोका जा सकता था। उन पर आंकड़े शायद उपलब्ध भी हैं।

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