2013-01-16 10 views
5

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

एक सरल उदाहरण:

DLL D0: 
    class A1 -> References B1 
    class B1 -> References A1 

कक्षा A1 और B1 एक दूसरे के लिए संदर्भ है, और के रूप में वे एक ही DLL में हैं, इस ठीक है - लेकिन वे आम में कुछ ख़ास नहीं है मैं तो उन्हें अलग-अलग डीएलएस में तोड़ना चाहते हैं।

DLL D1: class A1 -> References D2.B1 
DLL D2: class B1 -> References D1.A1 

मैं MSBuild बताने के लिए निर्माण करने के लिए (डी 1 + डी 2) के रूप में यदि कोड के सभी एक भी dll में थे सक्षम होना चाहते हैं:

हालांकि, निम्नलिखित एक परिपत्र संदर्भ समस्या के कारण असंभव है । क्या मैं यहां कुछ भी कर सकता हूं या क्या मैं एसओपी का पालन करता हूं और "इसे हैक करता हूं?"

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

+1

उन्हें अलग-अलग भौतिक फ़ाइलों में तोड़ने का क्या फायदा है? आप उन्हें अलग-अलग परियोजनाओं में रख सकते हैं और एक एकल .netModule बनाने के लिए एमएसबिल्ड का उपयोग कर सकते हैं जिसे बाद में निष्पादन योग्य में संकलित किया जा सकता है ... लेकिन दूसरी तरफ जा रहा है ... इंटरफ़ेस और निर्भरता इंजेक्शन को दोबारा बिना किए बिना। – cfeduke

+2

ऐसा लगता है जैसे हैक्स आपके परिपत्र संदर्भों के मुद्दे को जन्म देता है, और वे वास्तविक समाधान का हिस्सा नहीं होंगे। –

उत्तर

12

मेरी टीम वर्तमान में समय या संसाधन एक विशाल refactor करने के लिए नहीं है

तो ... ऐसा नहीं करते हैं:

लेकिन वे की जरूरत नहीं है बहुत आम है इसलिए मैं उन्हें अलग-अलग डीएलएस में तोड़ना चाहता हूं।

इसे तब तक छोड़ दें जब तक आप पूरे समाधान में महत्वपूर्ण रिफैक्टरिंग लागू नहीं कर सकते।

यह एक ऐसा मामला है जहां एक संगठनात्मक आस्तीन को दोबारा सुधारने से बड़ी मात्रा में रिफैक्टरिंग स्ट्रीम को मजबूर किया जाएगा। और आपके पास सौदा करने के लिए बहुत बड़ी समस्याएं हैं। मैं वहाँ गया था। मुझे आप के लिए महसूस होता है। शुभकामनाएं मेट।

संबंधित मुद्दे