एक उदाहरण के रूप में, कहते हैं कि आप जावा में एक ऐप लिख रहे हैं ।
आपका ऐप Python में लिखे API सर्वर के साथ संचार करता है ।
पायथन सर्वर एक SQL डेटाबेस के साथ संचार करता है।
आपके पास जावास्क्रिप्ट में लिखे गए आपके ऐप के लिए एक वेबसाइट भी है ।
4 अलग-अलग भाषाओं के साथ, अनिवार्य रूप से समान डेटा संरचनाओं को अलग-अलग दोहराते हुए समाप्त करना आसान है।
उदाहरण के लिए, एक User
प्रकार इस तरह दिख सकता है (छद्मकोश):
type User {
integer id;
string name;
timestamp birthday;
}
परियोजना के प्रत्येक भाग के लिए किसी न किसी तरह के प्रतिनिधित्व की आवश्यकता होगी User
। जावा और पायथन भागों को दो अलग-अलग class
घोषणाओं की आवश्यकता होगी । डेटाबेस को User
तालिका घोषणा की आवश्यकता होगी । और सामने के छोर साइट को User
भी प्रतिनिधित्व करने की आवश्यकता होगी ।
इस प्रकार को 4 अलग-अलग समयों में दोहराने से डोंट-रिपीट-योरसेल्फ सिद्धांत वास्तव में टूट जाता है । इसके अलावा समस्या यह है कि यदि User
प्रकार बदल दिया जाता है तो इन परिवर्तनों को परियोजना के हर अलग हिस्से में दोहराया जाना चाहिए।
मुझे पता है कि Google की प्रोटोबॉफ़ लाइब्रेरी इस समस्या का एक प्रकार का समाधान प्रदान करती है जिसमें आप एक विशेष वाक्यविन्यास का उपयोग करके एक डेटास्ट्रक्चर लिखते हैं, और फिर लाइब्रेरी आपके लिए कई अलग-अलग प्रोग्रामिंग भाषाओं में एक संरचना की घोषणा करता है। लेकिन यह अभी भी आपके प्रकारों के लिए सत्यापन तर्क को दोहराने के मुद्दे से नहीं निपटता है।
क्या किसी के पास इस बारे में पुस्तकों / ब्लॉग पोस्ट के लिए कोई सुझाव या लिंक है?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
। यह नहीं है। आपके पास 4 अलग-अलग सिस्टम हैं जो अलग-अलग चीजें करते हैं। आप DRY बहुत दूर ले जा रहे हैं। मेरे अनुभव के अनुसार, पुन: प्रयोज्यता का क्रम जो आप करना चाहते हैं, वह बुराई का बीज है, क्योंकि तंग युग्मन का परिचय दें। वह भी User
4 अलग-अलग भाषाओं में 4 बार दोहराए जाने से भी बदतर । वितरित वातावरण में, युग्मन एक समस्या है। DRY नहीं है।