यह बीएडी की आदत है और बहुत ही भयानक अभ्यास है -शून्य कट्टरवाद को समझे बिना यहोशू बलोच को उद्धृत करने की है।
मैंने जोशुआ बलोच को कुछ भी नहीं पढ़ा है, इसलिए या तो
- वह एक भयानक प्रोग्रामर है
- या अब तक जिन लोगों को मैं उन्हें उद्धृत करता हूं (जोशुआ एक लड़के का नाम है जिसे मैं मानता हूं) केवल अपनी सामग्री का उपयोग धार्मिक लिपियों के रूप में कर रहे हैं ताकि उनके सॉफ़्टवेयर धार्मिक भोगों को सही ठहराया जा सके।
जैसा कि बाइबल के कट्टरवाद में है, बाइबल के सभी कानूनों को पूरा किया जा सकता है
- अपने पूरे दिल और पूरे दिमाग के साथ मौलिक पहचान से प्यार करें
- अपने पड़ोसी से खुद की तरह प्यार करें
और इसी तरह सॉफ्टवेयर इंजीनियरिंग कट्टरवाद द्वारा अभिव्यक्त किया जा सकता है
- अपने सभी प्रोग्रामिंग और दिमाग के साथ खुद को ग्राउंड-जीरो फंडामेंटल में समर्पित करें
- और अपने साथी-प्रोग्रामरों की उत्कृष्टता के लिए समर्पित करें जैसा कि आप स्वयं के लिए करेंगे।
इसके अलावा, बाइबिल के कट्टरपंथी हलकों के बीच एक मजबूत और उचित कोरोलरी तैयार की गई है
- पहले अपने आप से प्यार करो। क्योंकि यदि आप खुद से बहुत प्यार नहीं करते हैं, तो यह अवधारणा "अपने पड़ोसी से खुद को प्यार करें" ज्यादा वजन नहीं उठाती है, क्योंकि "आप खुद से कितना प्यार करते हैं" वह डेटम लाइन है जिसके ऊपर आप दूसरों को पसंद करेंगे।
इसी तरह, यदि आप खुद को एक प्रोग्रामर के रूप में सम्मान नहीं देते हैं और सिर्फ कुछ प्रोग्रामिंग गुरु-नाथ के उच्चारण और भविष्यवाणियों को स्वीकार करते हैं, तो बुनियादी बातों पर सवाल किए बिना, आपका उद्धरण और यहोशू बलोच (और इस तरह) पर निर्भरता व्यर्थ है। और इसलिए, आप वास्तव में अपने साथी-प्रोग्रामरों के लिए कोई सम्मान नहीं करेंगे।
सॉफ्टवेयर प्रोग्रामिंग के मौलिक नियम
- आलस्य एक अच्छे प्रोग्रामर का गुण है
- आप अपने प्रोग्रामिंग जीवन को जितना हो सके, आलसी बना सकते हैं और इसलिए जितना संभव हो उतना प्रभावी
- आप अपने प्रोग्रामिंग के परिणामों और एंट्रेस को आसान बनाने के लिए, आलसी के रूप में और इसलिए अपने neigbour- प्रोग्रामर जो आपके साथ काम करते हैं और अपनी प्रोग्रामिंग एंट्रेस को उठाते हैं, के लिए यथासंभव प्रभावी हैं।
इंटरफ़ेस-पैटर्न स्थिरांक एक बुरी आदत है ???
मौलिक रूप से प्रभावी और जिम्मेदार प्रोग्रामिंग के कौन से कानून के तहत यह धार्मिक निर्णय होता है?
बस इंटरफ़ेस-पैटर्न स्थिरांक ( https://en.wikipedia.org/wiki/Constant_interface ) पर विकिपीडिया लेख पढ़ें , और मूर्खतापूर्ण बहाने यह इंटरफ़ेस-पैटर्न स्थिरांक के खिलाफ बताता है।
व्हाट-नो आईडीई? सॉफ्टवेयर प्रोग्रामर के रूप में पृथ्वी पर कौन आईडीई का उपयोग नहीं करेगा? हम में से अधिकांश ऐसे प्रोग्रामर हैं जो आईडीई के उपयोग से बचने के लिए माचो एसेसेटिक सर्वाइवलिज्म थ्रो को साबित नहीं करना चाहते हैं।
- इसके अलावा - एक आईडीई की जरूरत नहीं के साधन के रूप में सूक्ष्म कार्यात्मक प्रोग्रामिंग के एक दूसरे समर्थकों की प्रतीक्षा करें। प्रतीक्षा करें जब तक आप डेटा-मॉडल सामान्यीकरण पर मेरी व्याख्या नहीं पढ़ते।
मौजूदा दायरे के भीतर उपयोग किए जाने वाले चरों के नाम स्थान को प्रदूषित करता है? यह इस मत के समर्थक हो सकते हैं
- के बारे में पता नहीं है, और की जरूरत है, डेटा-मॉडल सामान्यीकरण
स्थिरांक को लागू करने के लिए इंटरफेस का उपयोग करना इंटरफेस का दुरुपयोग है। ऐसे के समर्थकों की बुरी आदत है
- यह नहीं देखना कि "स्थिरांक" को अनुबंध के रूप में माना जाना चाहिए। और इंटरफेस एक अनुबंध के अनुपालन को लागू करने या पेश करने के लिए उपयोग किया जाता है।
भविष्य में कार्यान्वित कक्षाओं में इंटरफेस को परिवर्तित करना असंभव नहीं है। हह .... हम्म्म ... ???
- आप अपनी लगातार आजीविका के रूप में प्रोग्रामिंग के ऐसे पैटर्न में क्यों उलझना चाहेंगे? IOW, अपने आप को ऐसी AMBIVALENT और खराब प्रोग्रामिंग आदत के लिए समर्पित क्यों करें?
चाहे जो भी बहाना हो, कोई वैध EXCUSE नहीं है, जब यह फ़ंडामेंटली इफ़ेक्टिव सॉफ़्टवेयर इंजीनियरिंग की बात आती है, जो इंटरफ़ेस स्थिरांक के उपयोग को कम करने या आम तौर पर हतोत्साहित करने के लिए है।
इससे कोई फर्क नहीं पड़ता कि संयुक्त राज्य अमेरिका के संविधान को बनाने वाले संस्थापक पिताओं के मूल इरादे और मानसिक स्थिति क्या थे। हम संस्थापक पिता के मूल इरादों पर बहस कर सकते हैं, लेकिन मुझे ध्यान है कि अमेरिकी संविधान के लिखित कथन हैं। और यह हर अमेरिकी नागरिक की जिम्मेदारी है कि वह अमेरिकी संविधान के लिखित साहित्यिक-कट्टरपंथ का शोषण करे, अलिखित संस्थापक-इरादों का नहीं।
इसी तरह, मुझे परवाह नहीं है कि इंटरफ़ेस के लिए जावा प्लेटफॉर्म और प्रोग्रामिंग भाषा के संस्थापकों के "मूल" इरादे क्या थे। जावा स्पेसिफिकेशन प्रदान करने वाली प्रभावी विशेषताओं का मैं ध्यान रखता हूं और जिम्मेदार सॉफ्टवेयर प्रोग्रामिंग के मौलिक नियमों को पूरा करने में मेरी मदद करने के लिए मैं उन विशेषताओं का पूरी तरह से दोहन करने का इरादा रखता हूं। मुझे परवाह नहीं है अगर मुझे "इंटरफेस के इरादे का उल्लंघन करना" माना जाता है। मुझे परवाह नहीं है कि गोस्लिंग या कोई बलोच "जावा का उपयोग करने के उचित तरीके" के बारे में कहता है, जब तक कि वे जो कहते हैं वह बुनियादी जरूरतों को पूरा करने की मेरी आवश्यकता का उल्लंघन नहीं करता है।
मौलिक डेटा-मॉडल सामान्यीकरण है
इससे कोई फर्क नहीं पड़ता कि आपका डेटा-मॉडल होस्ट या ट्रांसमिटेड कैसे है। यदि आप डेटा-मॉडल के सामान्यीकरण की आवश्यकता और प्रक्रिया को नहीं समझते हैं, तो आप इंटरफेस या एनम या जोनोट्स, रिलेशनल या नो-एसक्यूएल का उपयोग करते हैं।
हमें पहले प्रक्रियाओं के सेट के डेटा-मॉडल को परिभाषित और सामान्य करना होगा। और जब हमारे पास एक सुसंगत डेटा-मॉडल होता है, तभी हम कार्यात्मक व्यवहार को परिभाषित करने के लिए इसके घटकों के प्रक्रिया प्रवाह का उपयोग कर सकते हैं और प्रक्रिया एक क्षेत्र या अनुप्रयोगों के दायरे को अवरुद्ध कर सकती है। और उसके बाद ही हम प्रत्येक कार्यात्मक प्रक्रिया के एपीआई को परिभाषित कर सकते हैं।
यहां तक कि EF Codd द्वारा प्रस्तावित डेटा सामान्यीकरण के पहलुओं को अब गंभीर रूप से चुनौती दी गई है और गंभीर रूप से चुनौती दी गई है। जैसे 1NF पर उनके बयान की अस्पष्ट, गलत और अधिक सरलीकृत के रूप में आलोचना की गई है, जैसा कि उनके बाकी बयानों में विशेष रूप से आधुनिक डेटा सेवाओं, रेपो-प्रौद्योगिकी और ट्रांसमिशन के आगमन में है। IMO, EF Codd स्टेटमेंट्स को पूरी तरह से ड्रॉ किया जाना चाहिए और अधिक गणितीय रूप से प्रशंसनीय स्टेटमेंट्स के नए सेट को डिज़ाइन किया जाना चाहिए।
EF Codd का एक भयावह दोष और प्रभावी मानव समझ के लिए इसके मिसलिग्न्मेंट का कारण उनका विश्वास है कि मानवीय रूप से बहु-आयामी, परिवर्तनशील-आयाम डेटा को कुशलता से टुकड़ा 2-आयामी मैपिंग का एक सेट माना जा सकता है।
डेटा सामान्यीकरण का मूल आधार
क्या EF Codd व्यक्त करने में विफल रहा।
प्रत्येक सुसंगत डेटा-मॉडल के भीतर, ये प्राप्त करने के लिए डेटा-मॉडल सुसंगतता का क्रमिक स्नातक क्रम हैं।
- डेटा इंस्टेंस की एकता और पहचान।
- प्रत्येक डेटा घटक की ग्रैन्युलैरिटी को डिज़ाइन करें, जिससे उनकी ग्रैन्युलैरिटी एक ऐसे स्तर पर हो जहाँ एक घटक के प्रत्येक उदाहरण को विशिष्ट रूप से पहचाना और प्राप्त किया जा सके।
- उदाहरण की अनुपस्थिति। यानी, कोई साधन मौजूद नहीं है जिससे एक पहचान एक घटक के एक से अधिक उदाहरण का उत्पादन करती है।
- उदाहरण क्रॉस्टल की अनुपस्थिति। किसी घटक के एक या अधिक उदाहरणों का उपयोग करने के लिए किसी घटक के उदाहरण की पहचान करने के लिए योगदान की आवश्यकता नहीं होती है।
- डेटा घटकों / आयामों की एकता और पहचान।
- घटक डी-अलियासिंग की उपस्थिति। वहाँ एक परिभाषा मौजूद होनी चाहिए जिससे एक घटक / आयाम विशिष्ट रूप से पहचाना जा सके। जो एक घटक की प्राथमिक परिभाषा है;
- जहां प्राथमिक परिभाषा उप-आयामों या सदस्य-घटकों को उजागर करने का परिणाम नहीं देगी जो कि किसी इच्छित घटक का हिस्सा नहीं हैं;
- घटक डीलिंग का अनूठा साधन। इसमें एक और केवल एक ही होना चाहिए, एक घटक के लिए इस तरह के घटक डी-अलियासिंग परिभाषा।
- घटकों के पदानुक्रमित संबंध में मूल घटक की पहचान करने के लिए एक, और केवल एक, परिभाषा इंटरफ़ेस या अनुबंध मौजूद है।
- घटक क्रोस्टॉक की अनुपस्थिति। किसी घटक की निश्चित पहचान में योगदान करने के लिए किसी अन्य घटक के सदस्य का उपयोग करने की आवश्यकता मौजूद नहीं है।
- ऐसे माता-पिता-बच्चे के संबंध में, माता-पिता की पहचान की परिभाषा बच्चे के सदस्य घटकों के सेट के हिस्से पर निर्भर नहीं होनी चाहिए। माता-पिता की पहचान का एक सदस्य घटक एक बच्चे के किसी भी या सभी बच्चों को संदर्भित करने का सहारा लिए बिना पूरी बच्चे की पहचान होना चाहिए।
- डेटा-मॉडल के द्वि-मोडल या बहु-मोडल दिखावे को रोकना।
- जब किसी घटक की दो उम्मीदवार परिभाषाएँ मौजूद होती हैं, तो यह एक स्पष्ट संकेत है कि दो अलग-अलग डेटा-मॉडल मौजूद होते हैं, जिन्हें एक के रूप में मिलाया जाता है। इसका मतलब है कि डेटा-मॉडल स्तर या क्षेत्र स्तर पर असंगति है।
- अनुप्रयोगों के एक क्षेत्र को एक और केवल एक डेटा-मॉडल का उपयोग करना चाहिए, सुसंगत रूप से।
- घटक उत्परिवर्तन का पता लगाएं और पहचानें। जब तक आपने विशाल डेटा के सांख्यिकीय घटक विश्लेषण का प्रदर्शन नहीं किया है, तो आप संभवतः इलाज नहीं करते हैं, या घटक उत्परिवर्तन की आवश्यकता को देखते हैं।
- डेटा-मॉडल में इसके कुछ घटक चक्रवात या धीरे-धीरे हो सकते हैं।
- मोड सदस्य-रोटेशन या ट्रांसपोजिशन-रोटेशन हो सकता है।
- सदस्य-रोटेशन उत्परिवर्तन घटकों के बीच बच्चे के घटकों की विशिष्ट अदला-बदली हो सकती है। या जहां पूरी तरह से नए घटकों को परिभाषित करना होगा।
- ट्रांसपोज़ल म्यूटेशन एक आयामी सदस्य के रूप में एक विशेषता में उत्परिवर्तित होता है, इसके विपरीत।
- प्रत्येक उत्परिवर्तन चक्र को एक अलग डेटा-मोडल के रूप में पहचाना जाना चाहिए।
- प्रत्येक म्यूटेशन का संस्करण करें। ऐसा है कि आप डेटा मॉडल के पिछले संस्करण को बाहर निकाल सकते हैं, जब डेटा मॉडल के 8 साल पुराने उत्परिवर्तन के इलाज के लिए शायद आवश्यकता होती है।
अंतर-सर्विसिंग घटक-अनुप्रयोगों के क्षेत्र या ग्रिड में, एक और केवल एक सुसंगत डेटा-मॉडल होना चाहिए या स्वयं को पहचानने के लिए डेटा-मॉडल / संस्करण के लिए एक साधन मौजूद होना चाहिए।
क्या हम अभी भी पूछ रहे हैं कि क्या हम इंटरफ़ेस कॉन्स्टेंट का उपयोग कर सकते हैं? वास्तव में ?
इस सांसारिक प्रश्न की तुलना में अधिक परिणामी होने पर डेटा-सामान्यीकरण मुद्दे हैं। यदि आप उन मुद्दों को हल नहीं करते हैं, तो आपको भ्रम है कि इंटरफ़ेस स्थिरांक कारण तुलनात्मक रूप से कुछ भी नहीं है। कुछ भी नहीं।
डेटा-मॉडल के सामान्यीकरण से फिर आप घटकों को कॉन्ट्रैक्ट इंटरफ़ेस कॉन्स्टेंट के रूप में चर के रूप में निर्धारित करते हैं।
फिर आप यह निर्धारित करते हैं कि कौन सा मूल्य इंजेक्शन, संपत्ति कॉन्फ़िगरेशन प्लेसहोल्डिंग, इंटरफेस, अंतिम तार, आदि में जाता है।
यदि आपको इंटरफ़ेस स्थिरांक के खिलाफ निर्देशित करने के लिए एक घटक को आसान बनाने के लिए आवश्यकता के बहाने का उपयोग करना है, तो इसका मतलब है कि आप डेटा-मॉडल सामान्यीकरण का अभ्यास नहीं करने की बुरी आदत में हैं।
शायद आप डेटा-मॉडल को vcs रिलीज़ में संकलित करना चाहते हैं। कि आप डेटा-मॉडल के विशिष्ट पहचान योग्य संस्करण को बाहर निकाल सकते हैं।
इंटरफेस में परिभाषित मूल्य पूरी तरह से गैर-परस्पर होने का आश्वासन दिया जाता है। और साझा करने योग्य है। अपनी कक्षा में अंतिम तार के एक सेट को दूसरी कक्षा से क्यों लोड करें जब आपको आवश्यकता होती है स्थिरांक का वह सेट ??
तो क्यों नहीं यह एक डेटा-मॉडल अनुबंध प्रकाशित करने के लिए? मेरा मतलब है कि अगर आप इसे सुसंगत रूप से प्रबंधित और सामान्य कर सकते हैं, तो क्यों नहीं? ...
public interface CustomerService {
public interface Label{
char AssignmentCharacter = ':';
public interface Address{
String Street = "Street";
String Unit= "Unit/Suite";
String Municipal = "City";
String County = "County";
String Provincial = "State";
String PostalCode = "Zip"
}
public interface Person {
public interface NameParts{
String Given = "First/Given name"
String Auxiliary = "Middle initial"
String Family = "Last name"
}
}
}
}
अब मैं अपने ऐप्स के अनुबंधित लेबलों को इस तरह से संदर्भित कर सकता हूं
CustomerService.Label.Address.Street
CustomerService.Label.Person.NameParts.Family
यह जार फ़ाइल की सामग्री को भ्रमित करता है? एक जावा प्रोग्रामर के रूप में मैं जार की संरचना के बारे में परवाह नहीं करता हूं।
यह ओस्गी-प्रेरित रनटाइम स्वैपिंग के लिए जटिलता प्रस्तुत करता है? Osgi प्रोग्रामर्स को उनकी बुरी आदतों को जारी रखने की अनुमति देने के लिए एक अत्यंत कुशल साधन है। ओस्गी की तुलना में बेहतर विकल्प हैं।
या यह क्यों नहीं? प्रकाशित अनुबंध में निजी स्थिरांक का कोई रिसाव नहीं है। सभी निजी कॉन्स्टेंट्स को "कॉन्स्टेंट्स" नाम के एक निजी इंटरफ़ेस में वर्गीकृत किया जाना चाहिए, क्योंकि मुझे कॉन्स्टेंट्स की खोज नहीं करनी है और मैं बार-बार "निजी फाइनल स्ट्रिंग" टाइप करने के लिए बहुत आलसी हूं।
public class PurchaseRequest {
private interface Constants{
String INTERESTINGName = "Interesting Name";
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
शायद यह भी:
public interface PurchaseOrderConstants {
public interface Properties{
default String InterestingName(){
return something();
}
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
जब इंटरफ़ेस लागू किया जाता है, तो विचार करने लायक इंटरफेस स्थिरांक के साथ एकमात्र मुद्दा।
यह इंटरफेस का "मूल इरादा" नहीं है? जैसे मैं अमेरिकी संविधान को बनाने में संस्थापक पिता के "मूल इरादे" की परवाह करता हूं, बजाय इसके कि सुप्रीम कोर्ट अमेरिकी संविधान के लिखित पत्रों की व्याख्या कैसे करेगा ???
आखिरकार, मैं मुक्त, जंगली और बहादुर के घर में रहता हूं। बहादुर बनो, स्वतंत्र रहो, जंगली बनो - इंटरफ़ेस का उपयोग करो। यदि मेरे साथी-प्रोग्रामर प्रोग्रामिंग के कुशल और आलसी साधनों का उपयोग करने से इनकार करते हैं, तो क्या मैं उनकी प्रोग्रामिंग दक्षता को कम करने के लिए उनके शासन के साथ संरेखित करने के सुनहरे नियम से बाध्य हूं? शायद मुझे चाहिए, लेकिन यह एक आदर्श स्थिति नहीं है।