मुझे इस कोड का सामना करना पड़ा जिसमें एक विधि कॉल, उदाहरण के लिए ClassA.search (ए, बी, ध्वज) 3 नियंत्रकों द्वारा उपयोग किया जा रहा है। यह विधि का एक सरलीकृत संस्करण है:क्या यह विधि का पुन: उपयोग/साझा करने का एक अच्छा तरीका है?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
क्या यह एक अच्छा विचार है क्योंकि कोड का पुन: उपयोग किया जाता है? या फिर भी कोड पुन: उपयोग करने में सक्षम होने का एक बेहतर तरीका है लेकिन विधि कॉलर (क्लाइंट) कोड अनुकूलन के लिए इस ध्वज को नहीं पेश करें (जैसे इसे 3 अलग-अलग तरीकों से विभाजित कर सकते हैं लेकिन फिर भी एक सामान्य कोड रिफैक्टर विधि घोषित करने में सक्षम हो सकते हैं)?
मैं इस के साथ सहमत होगा बशर्ते आप इसे काम करने के लिए स्थानीय चर को फ़ील्ड में बदलना न करें। –
आपको स्थानीय चर खराब क्यों लगता है? यदि आपको राज्यों को पैरामीटर के माध्यम से पार करना है, तो यह महत्वपूर्ण है, कन्स्ट्रक्टर में अंतिम फ़ील्ड में शुरू होने वाले राज्य के साथ एक बार ऑब्जेक्ट बनाएं और इसे केवल एक बार उपयोग करें। स्टेरॉयड पर समारोह ;-)। –
यह सच है हालांकि फ़ील्ड (और एक कन्स्ट्रक्टर?) के साथ एक वर्ग जोड़ना एक झंडा से बचने के लिए बहुत काम है। ;) –