← नवीनतम पेपर
💻 computer science

Analyzing Dependency Distribution Changes Arising from Code Smell Interactions

यह अध्ययन 116 ओपन-सोर्स जावा सिस्टमों का विश्लेषण करता है ताकि यह प्रदर्शित किया जा सके कि कोड स्मैल्स (code smells) के बीच की अंतःक्रियाएं स्टैटिक डिपेंडेंसी वितरण को महत्वपूर्ण रूप से बदल देती हैं, जिससे अक्सर कुल डिपेंडेंसी बढ़ जाती है, और इस प्रकार कोड स्मैल डिटेक्शन, प्रायोरिटीज़ेशन और रिफैक्टरिंग रणनीतियों में सुधार के लिए मूल्यवान अंतर्दृष्टि प्रदान करती हैं।

मूल लेखक: Zushuai Zhang, Elliott Wen, Ewan Tempero

प्रकाशित 2026-03-05
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Zushuai Zhang, Elliott Wen, Ewan Tempero

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक विशाल, हलचल भरे शहर का प्रबंधन कर रहे हैं। इस शहर में, हर इमारत (मॉड्यूल या क्लास) दूसरे इमारतों से जुड़ी सड़कों के माध्यम से जुड़ी हुई है। ये सड़कें निर्भरताएं (dependencies) हैं।

आमतौर पर, कुछ सड़कें ठीक रहती हैं। लेकिन अगर इमारत A, इमारत B से जुड़ी है, और इमारत B, इमारत C से जुड़ी है, और आपको इमारत A में एक रिसाव (leak) को ठीक करना है, तो आप अनजाने में इमारत C में ट्रैफिक जाम का कारण बन सकते हैं। यह एक "रिपल इफेक्ट" (लहर जैसा प्रभाव) है। जितनी अधिक सड़कें होंगी, किसी चीज़ को तोड़ने के बिना चीजों को ठीक करना उतना ही कठिन होगा।

अब, कल्पना करें कि कुछ इमारतें "बीमार" हैं। सॉफ्टवेयर में, हम इन बीमार स्थानों को कोड स्मेल (Code Smells) कहते हैं। वे अनिवार्य रूप से टूटे हुए नहीं हैं, लेकिन वे खराब तरीके से डिज़ाइन किए गए हैं (जैसे कि एक ऐसी इमारत जिसमें खिड़कियां नहीं हैं, या एक ऐसा कमरा जो पूरे शहर का काम करने की कोशिश करता है)।

मुख्य प्रश्न

लंबे समय तक, शोधकर्ताओं ने इन "बीमार इमारतों" का एक-एक करके अध्ययन किया। उन्होंने पूछा: "क्या एक 'गॉड क्लास' (एक ऐसी इमारत जो सब कुछ करने की कोशिश करती है) शहर को बनाए रखना कठिन बनाती है?"

जवाब अक्सर यह था: "नहीं, वास्तव में अकेले ऐसा नहीं है।"

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

अध्ययन: शहर-व्यापी ट्रैफिक गणना

शोधकर्ताओं (झांग, वेन और टेम्पिरो) ने 116 वास्तविक दुनिया के सॉफ्टवेयर शहरों (GitHub पर ओपन-सोर्स जावा प्रोजेक्ट्स) का अध्ययन किया। उन्होंने हर इमारत के बीच की हर सड़क का नक्शा बनाया और "बीमार" इमारतों की जांच की।

उन्होंने दो परिदृश्यों की तुलना की:

  1. बीमार इंटरेक्शन (Sick Interaction): दो बीमार इमारतें जो एक सड़क से जुड़ी हैं।
  2. सामान्य इंटरेक्शन (Normal Interaction): एक बीमार इमारत का एक स्वस्थ इमारत से जुड़ा होना, या दो स्वस्थ इमारतों का आपस में जुड़ा होना।

निष्कर्ष: "डबल व्हैमी" (दोहरी मार) प्रभाव

1. बीमार जोड़े ट्रैफिक जाम पैदा करते हैं।
अध्ययन में पाया गया कि जब दो कोड स्मेल आपस में मिलते हैं, तो उनके बीच सड़कों (निर्भरताओं) की संख्या विस्फोटक रूप से बढ़ जाती है। 36 में से 28 मामलों में, परस्पर क्रिया करने वाले स्मेल की उपस्थिति का मतलब सामान्य से काफी अधिक कनेक्शन था।

  • उपमा: कल्पना कीजिए कि दो पड़ोसी हैं जो अपने स्वयं के बगीचों से नफरत करते हैं। अपने बगीचों को ठीक करने के बजाय, वे लगातार एक-दूसरे से औजार, पानी और पौधे उधार लेते हैं। परिणाम स्वरूप, उनके घरों को जोड़ने वाले पाइपों और सीढ़ियों का एक अराजक जाल बन जाता है जो पहले मौजूद नहीं था। वे साथ मिलकर जितने अधिक "बीमार" होते हैं, उलझा हुआ जाल उतना ही अधिक घना होता जाता है।

2. गंदगी की दिशा अनुमानित है।
शोधकर्ताओं ने केवल अधिक सड़कें ही नहीं पाईं; उन्होंने पाया कि सड़कों का प्रकार एक विशिष्ट तरीके से बदल जाता है।

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

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

  • उपमा: यदि दो पड़ोसी एक साझा बाड़ (fence) के लिए लड़ रहे हैं, तो केवल एक पड़ोसी के व्यवहार को ठीक करने से लड़ाई नहीं रुकेगी। लेकिन यदि आप यह महसूस करते हैं कि वे इसलिए लड़ रहे हैं क्योंकि वे एक बाड़ साझा कर रहे हैं, तो आप उन्हें अलग करने के लिए एक नई दीवार (रिफैक्टर) बना सकते हैं, और अचानक शोर बंद हो जाता है।

यह आपके लिए क्यों महत्वपूर्ण है (भले ही आप कोडर न हों)

यह शोध हमें सॉफ्टवेयर रखरखाव के लिए एक नया "ट्रैफिक मैप" देता है।

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

निचोड़

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

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →