मैं वर्तमान में सी ++ में एक गेम पर काम कर रहा हूं। चूंकि कोई कचरा कलेक्टर नहीं है, इसलिए हमेशा वस्तुओं को ध्यान से हटाने के लिए हमेशा यह सुनिश्चित किया जाता है कि हटाए जाने के बाद ऐसी वस्तुओं को और अधिक एक्सेस नहीं किया जाता है।
अब एक परियोजना बढ़ने के साथ ही कुछ वस्तुओं को अधिक से अधिक स्थानों से संदर्भित किया जा सकता है। उदाहरण के लिए, गेम में मेरी इकाइयां रेंडरर से संदर्भ पदानुक्रम से, चयन तंत्र से, एचयूडी से और इसी तरह से संदर्भित हो सकती हैं। अब - यदि कोई ऑब्जेक्ट हटा दिया जाता है तो किसी को यह सुनिश्चित करना होगा कि इस ऑब्जेक्ट को संदर्भित करने वाले सभी अन्य वर्गों को इसके बारे में अधिसूचित किया जाएगा।
या आइए इसे दूसरी तरफ कहें - अगर मैं एक नई कक्षा बनाता हूं जो मेरी इकाइयों में से किसी एक को संदर्भित कर सकता है, तो मुझे इकाई के कोड को भी बदलना होगा (या यूनिट मैनेजर या जो भी मॉड्यूल इकाई को हटा देता है यह नष्ट हो जाता है) यह सुनिश्चित करने के लिए कि यह नया मॉड्यूल जानता है कि वर्तमान इकाई जो वर्तमान इकाई संदर्भित करती है उसे हटा दिया जाता है।क्या यह एक योग्य सॉफ्टवेयर डिज़ाइन है?
अब मैं थोगट एक सामान्य घटना संचालित हो सकता हूं जो इस समस्या को हल करने के लिए आधारभूत आधार तैयार कर सकता है जिस पर एक और वस्तु सब्सक्राइब कर सकती है। कुछ इस तरह:
class DeletableBase;//forward declaration
class ISubscriber{
public:
virtual someObjectGotDeleted(DeletableBase* deletedObject)=0;
};
class DeletableBase{
private:
vector<ISubscriber*> subscribers;
public:
virtual ~DeletableBase(){
for(int i=0; i<subscribers.size(); i++)
subscribers[i]->someObjectGotDeleted(this);
}
subscribeForDeleteEvent(ISubscriber* subscriber){
subscribers.push_back(subscriber);
}
};
उस के साथ
- अगर मैं किसी भी वस्तु है कि एक नया वर्ग से इस वर्ग से विरासत संदर्भ मैं बस एक ग्राहक के रूप में अपने आप को जोड़ सकते हैं और अगर वस्तु किसी अन्य जगह से हटा दिया जाएगा मैं मिल जाएगा इसके बारे में अधिसूचित
यह कोडिंग का एक "साफ" तरीका है?
http://codereview.stackexchange.com/ पर निर्भर करता है। हालांकि, मैं इसे 'ऑफ टॉपिक' के रूप में बंद नहीं करना चाहता हूं। :/ –
मैं सहमत हूं; क्लोज स्क्रीन को उनके द्वारा सूचीबद्ध कुछ के अलावा साइटों पर माइग्रेट करने का विकल्प चाहिए। (मेटा के लिए!) –
मैं कहूंगा कि यह प्रोग्रामर से संबंधित है। एसई, कोडरव्यू नहीं। मुझे लगता है कि जो भी 4 प्रोग्रामिंग साइटों (एक के बजाय, जो अच्छा और आत्म निहित था) होने का शानदार विचार था, उसे शर्मिंदा होना चाहिए। –