मेरे पास एक कोड है जो एक इनपुट के रूप में एक द्विपक्षीय ग्राफ लेता है और "1" में मूल्य के साथ एक नक्शा देता है जो "सेट 1 में नोड्स" और कुंजी "2" की सूची है जिसका मान "सेट 2 में नोड्स" की सूची है । अब, मानचित्र mutable है। सिद्धांत में मुझे मानचित्र लौटने के लिए रक्षात्मक प्रति का उपयोग करना चाहिए। लेकिन, इस मामले में यह वास्तव में आवश्यक है? यह एक ओवरकिल दिखाई देता है।क्या रक्षात्मक प्रतियां हमेशा की जानी चाहिए?
पूर्व:
class BiPartite {
Graph graph;
Map bipartite
Bipartite(graph) {
this.graph = graph;
}
void calcBipartite() {
// calculate map
}
Map getMap() {
// should i make defensive copy ? Appears overkill.
}
}
यदि आप जिस मूल्य को वापस कर रहे हैं वह एक व्युत्पन्न जानकारी है जिसे फ्लाई पर गणना की जाती है, तो रक्षात्मक प्रतियां बनाने की कोई आवश्यकता नहीं है। क्या आप हर बार विधि कहने पर GetMap के वापसी मूल्य की गणना कर रहे हैं? – HariKrishnan
चेतावनी दीजिये कि कॉलर के पास पहले से ही इस ऑब्जेक्ट के आंतरिक मानों तक बाहरी पहुंच है क्योंकि आप 'ग्राफ़' की प्रतिलिपि नहीं बनाते हैं, मानते हैं कि' ग्राफ़ 'उत्परिवर्तनीय है। – jpmc26