मैं रूबी कोडर हूं। मेरे लिए, बाहरी परियोजना में रनटाइम, कक्षाओं या मॉड्यूल विधियों पर, बंदरगाह बदलने के लिए है। मुझे क्या रूचि है, यह आपके पास कौन सी तंत्र है जो आपको उस अच्छी सुविधा के कुछ दुरुपयोग से बचाएगा। अनुयायी, कुछ परिदृश्य जो मैंने सामना किया है, जहां बंदरगाह ने मुझे काट दिया है।मल्टीकीचिंग के साथ स्मॉलटाक कैसे काम करता है?
जबकि मुझे स्मॉलटाक बिल्कुल नहीं पता, वह भाषा रूबी से बहुत पहले रही है। मैंने यह देखने के लिए कुछ शोध किया है कि कैसे और कैसे स्मॉलटॉक ने इनमें से कुछ समस्याओं को हल किया लेकिन Google पर बहुत कुछ नहीं मिला। तो मैं यहां हूं, छोटे-छोटे लोगों से पूछना कि क्या वे अपना ज्ञान साझा कर सकते हैं।
परिदृश्य एक: बग फिक्सिंग संघर्ष
परियोजना ए और बी पर परियोजना सी परियोजना सी निर्भर एक बग है। प्रोजेक्ट ए और बी रिलीज में परियोजना सी
के लिए एक फिक्स शामिल है यदि आपका कोड प्रोजेक्ट ए और बी का उपयोग करता है, तो आप कैसे जान सकते हैं कि पैच संघर्ष नहीं करेंगे?
परिदृश्य बी: पुराना बग फिक्सिंग
परियोजना सी अपनी परियोजना की एक निश्चित लघु संस्करण जारी करता है।
यदि आप प्रोजेक्ट ए लोड करते हैं, तो संभावित ब्रेकेज के साथ पैच अभी भी लागू होगा? मुझे यह जानने में दिलचस्पी है कि क्या कुछ तंत्र हैं, उदाहरण के लिए, यदि कोड ठीक किया गया है तो पैच लोड न करें।
परिदृश्य सी: परस्पर विरोधी एक्सटेंशन
परियोजना ए और बी उपयोग परियोजना सी वर्ग फू। दोनों फू को एक यूटिलिटी विधि जोड़ें, कहें, #toDate। ए का टूडेट संस्करण दिनांक स्ट्रिंग देता है, और बी दिनांक दिनांक में से एक।
यदि आप दोनों परियोजनाओं (सी डी के साथ) लोड करते हैं, तो क्या कोई ऐसी तंत्र है जो संघर्ष को चेतावनी/रोक देगा? या किसी विधि में गलत उम्मीद के कारण रनटाइम त्रुटि में फेंकने तक आपको इंतजार करना पड़ेगा?
सवाल अद्यतन
जवाब पढ़ने के बारे में, मुझे लगता है मेरे सवाल काफ़ी व्यापक है और अस्पष्ट था। तो यहां इसका एक पुनर्लेखित संस्करण है।
देखें वास्तव में एक समस्या monkeypatch करने की क्षमता है? – CookieOfFortune
बंदरगाह की आपकी आलोचना चिह्न से काफी दूर लगती है। बंदरगाह में निहित कुछ भी नहीं है जो शुरुआती कक्षा के डिजाइन की तुलना में किसी भी तरह की अव्यवस्थितता को जन्म देता है। न ही यह अन्य कोड की तुलना में स्वाभाविक रूप से अधिक "क्रूर" है। किसी ऑब्जेक्ट को अलग-अलग फाइलों में विभाजित करना सच है, हालांकि कुछ तर्क देंगे कि प्रबंधनीय मॉड्यूल होने की अच्छी बात है - असल में, इसे उद्देश्य-सी में समूह से संबंधित कार्यक्षमता के लिए अच्छा अभ्यास माना जाता है। शायद भाषा की सुविधाओं के मुकाबले कोडर के साथ आपकी समस्याएं अधिक हैं। – Chuck
किसी भी सीएई में, अलग-अलग फ़ाइलों में विभाजित चीजों की पूरी धारणा गलत है; स्मॉलटॉक इस तरह से चीजें नहीं करता है। –