2009-09-03 9 views
6

Grails ढांचे में कई संरचनाएं/विशेषताएं हैं जो एक परियोजना के भीतर DRY सिद्धांत ("स्वयं को दोहराएं") का पालन करने की अनुमति देती हैं। यही है: किसी विशिष्ट प्रोजेक्ट के भीतर आपको शायद ही कभी सेटिंग्स या कोड के समान ब्लॉक दोहराने की आवश्यकता होती है। अब तक सब ठीक है।Grails प्रोजेक्ट के बीच कोड दोबारा उपयोग करें - इसे DRY

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

मैं DRY लेना चाहता हूं मेरी परियोजनाओं के बीच कोड डुप्लिकेट न करके अगले स्तर पर।

मेरा प्रश्न: आप अपनी खुद की आंतरिक Grails परियोजनाओं में इस समस्या से निपटने (उल्लंघन "इंटर-प्रोजेक्ट DRY") से कैसे निपटते हैं?

कृपया बहुत विशिष्ट/ठोस हो। यदि संभव हो तो अभ्यास में इसे हल करने के तरीके पर विशिष्ट कोड उदाहरण शामिल करने का प्रयास करें।

उत्तर

5

मैं ली से सहमत हूं, आम/साझा प्लगइन का उपयोग करना संभवतः जाने का सबसे अच्छा तरीका है। एक स्थान पर मैंने काम किया, इस कारण से हमारे पास कुछ आंतरिक प्लगइन्स थे।

सबसे सामान्य पैटर्न अपने सामान्य डोमेन ऑब्जेक्ट्स को अपनी प्लगइन में रखना है। यह डोमेन कक्षाओं या सेवाओं के लिए वास्तव में अच्छा काम करता है। हमने प्लगइन में नियंत्रकों, विचारों और स्थिर संसाधनों को पुन: सक्रिय नहीं किया, लेकिन एक ही सिद्धांत लागू होना चाहिए।

लंबी कहानी लघु: Grails artifacts का पुन: उपयोग = एक प्लगइन का उपयोग करें।

7

एक कस्टम प्लगइन लिखना सबसे अच्छा तरीका है। आपको इसे सार्वजनिक भंडार में रिलीज़ करने की आवश्यकता नहीं है, क्योंकि आप अपने नेटवर्क के भीतर कहीं भी एक निजी भंडार का उपयोग कर सकते हैं।

मेरे पास प्लगइन खींचने के लिए अभी तक पर्याप्त डुप्लिकेट कोड नहीं है (मेरी परियोजनाओं में दोहराए गए कोड को विभिन्न सार्वजनिक प्लगइन द्वारा कवर किया गया प्रतीत होता है), लेकिन एक प्लगइन कुछ सामान्य डोमेन के रूप में सरल हो सकता है कक्षाएं या सेवाएं

0

ली और कॉलिन के अंक जोड़ने के लिए, जो दोनों मान्य हैं, मुझे लगता है कि कई प्लगइन के मामले में सोच अन्य लाभ प्राप्त कर सकती है।

उदाहरण के लिए, आप अपने आवेदन functinality को कई टुकड़ों में विभाजित कर सकते हैं, और अलग-अलग लोग उनके ऊपर काम कर सकते हैं। या यदि तैनाती के दौरान परिणाम मिल सकते हैं, तो, आपको ऐप - उपयोगकर्ता-स्तर और व्यवस्थापक तक पहुंच की दो परतों की आवश्यकता होती है - यदि आपका डोमेन मॉडल एक अलग प्लगइन में है, जैसा कॉलिन ने सुझाव दिया है, तो आप आसानी से दो एप्लिकेशन बना सकते हैं और उन्हें अलग से तैनात करें।

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

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