"विन्यास पर कुछ सम्मेलन" सिर्फ समझदार चूक के लिए उबलते हैं। गैर-मानक उद्देश्य के लिए इसका उपयोग करने के लिए आपको केवल कुछ कॉन्फ़िगर करना होगा। मुझे यहां स्ट्रट्स की तुलना रेल से करनी है। रेल में, आपको अपने "एक्शन / स्क्रीन" को एक फ़ोल्डर में रखना होगा और फिर वे बस काम करेंगे। स्ट्रट्स में, आपको उन्हें अभी भी एक फोल्डर में रखना है, लेकिन आपको एक्शन-नेम और जेएसपी फाइल और फॉर्म के नाम और फॉर्म बीन के साथ भी आना होगा और यह निर्दिष्ट करना होगा कि स्ट्रट्स-कॉन्फिगर में ये तीन चीजें एक साथ कैसे काम करती हैं। xml और निर्दिष्ट करें कि फॉर्म अनुरोध (RESTful) पर है। यदि वह पर्याप्त नहीं है, तो फ़ॉर्म / फॉर्म-बीन मैपिंग का स्ट्रट्स-कॉन्फ़िगर में अपना स्वयं का सेक्शन है जिसे बाद में उसी फ़ाइल में एक्शन सेक्शन में स्वतंत्र रूप से मैप किया जाता है और यह सब काम करने के लिए JSP फ़ाइल में हस्तलिखित स्ट्रिंग्स पर निर्भर करता है अच्छी तरह। प्रत्येक स्क्रीन के लिए, कम से कम 6 चीजें जो आपको नहीं करनी चाहिए और एक त्रुटि करने के कई अवसर हैं। मुझे लगता है कि यदि आप की जरूरत है तो आप उन सभी चीजों को मैन्युअल रूप से रेल में सबसे अधिक या सभी सेट कर सकते हैं, लेकिन स्ट्रट्स के विकास के समय के 2/3 को जटिलता की अनावश्यक परतों के निर्माण और रखरखाव में लिया जाता है।
सभी निष्पक्षता में, स्ट्रट्स 1 को डिज़ाइन किया गया था जब लोग डेस्कटॉप और वेब के बीच अनुप्रयोगों को पोर्ट कर रहे थे। स्ट्रेट्स ने जो लचीलापन बनाया है, वह सब कुछ रेल के लिए उपयुक्त बनाता है, साथ ही सब कुछ एक डेस्कटॉप अनुप्रयोग की आवश्यकता होगी। दुर्भाग्य से, कॉन्फ़िगरेशन का पहाड़ जो सक्षम करता है कि लचीलापन किसी के लिए एक बहुत बड़ी गेंद और श्रृंखला है, जिसे केवल एक वेब ऐप या सिर्फ डेस्कटॉप ऐप लिखने की आवश्यकता है।
मैंने कहीं काम किया है कि उन्होंने अगला कदम उठाया और तर्क दिया, " कोड पर कॉन्फ़िगरेशन " लेकिन यह देखा कि इसके तार्किक चरम पर ले जाया गया है, परिणाम यह है कि कॉन्फ़िगरेशन एक नई कोडिंग भाषा बन जाती है। यह एक शेल गेम था जहां जटिलता को बिना किसी महत्वपूर्ण तरीके से ढकेल दिया गया था। और इसने मुझे सभी प्रकार की जाँच और अन्य सुरक्षा जालों के लिए सराहना दी जो एक अच्छी तरह से डिज़ाइन की गई प्रोग्रामिंग भाषा है। यदि आप एक स्थान या एपॉस्ट्रॉफ़ जोड़ते हैं, तो कोई त्रुटि संदेश के साथ उड़ने वाले कुछ आधे-बेक्ड कॉन्फ़िगरेशन फ़ाइल प्रारूप गुणवत्ता प्रोग्रामिंग भाषा पर कोई सुधार नहीं है, जिसमें संपादन उपकरण और इसके लिए लिखे गए गुणवत्ता संकलक के सूट हैं।
मैं कल्पना नहीं कर सकता कि समझदार चूक किसी भी सैद्धांतिक प्रिंसिपल को एक्स्टेंसिबिलिटी और मोड्युलैरिटी के बारे में बताती है। एक रूबी / रेल्स प्रोग्रामर जल्द ही स्ट्रैट 1 जैसे ढांचे पर स्विच करने की तुलना में उनकी आंखों में एक गर्म पोकर जैब करेगा जहां सभी कॉन्फ़िगरेशन कई एक्सएमएल फाइलों में स्पष्ट रूप से किए गए हैं। मैं सामान्य में रेल बनाम स्ट्रट्स बनाम बहस नहीं कर रहा हूं, लेकिन यह सम्मेलन एक विशाल उत्पादकता जीत हो सकता है। ये दो प्रौद्योगिकियां सबसे चरम वास्तविक दुनिया की तुलना हैं जो मैंने देखी हैं।
यदि आप जावा में काम करते हैं, तो यहोशू बलोच, "प्रभावी जावा," आइटम 2 की जांच करें: "एक बिल्डर पर विचार करें जब कई निर्माता मापदंडों के साथ सामना करना पड़ता है" पीपी 11-16। अधिकांश उद्देश्यों के लिए, कुछ मापदंडों (कॉन्फ़िगरेशन) की आवश्यकता होती है, और कुछ वैकल्पिक है। मूल विचार केवल आवश्यक कॉन्फ़िगरेशन की आवश्यकता है और केवल उपयोगकर्ता (जो एक अन्य कार्यक्रम हो सकता है) को अतिरिक्त विकल्प निर्दिष्ट करें। मैंने एक महीने पहले इस पैटर्न के साथ कोड का एक गुच्छा साफ किया और यह सकारात्मक रूप से चमकता है।