मैं पूछ रहा हूं क्योंकि मैं एक मॉकिंग फ्रेमवर्क (मॉकिटो) का उपयोग करने की कोशिश कर रहा हूं जो आपको स्थिर तरीकों का नकल करने की अनुमति नहीं देता है। इसमें देखकर मुझे कुछ ब्लॉग पोस्ट मिल गए हैं, जिसमें कहा गया है कि आपके पास जितनी संभव हो उतनी स्थिर विधियां होनी चाहिए, लेकिन मुझे अपने सिर को लपेटने में कठिनाई क्यों हो रही है। विशेष रूप से वे विधियां जो वैश्विक स्थिति को संशोधित नहीं करती हैं और मूल रूप से सहायक तरीके हैं। उदाहरण के लिए मेरे पास ApiCaller
नामक एक वर्ग है जिसमें कई स्थैतिक विधियां हैं। स्थैतिक विधि का उद्देश्य एक HTTP कॉल निष्पादित करना है, हमारे सर्वर द्वारा लौटाए गए किसी भी कस्टम समस्या से निपटने के लिए (पूर्व उपयोगकर्ता लॉग इन नहीं किया गया है) और प्रतिक्रिया वापस कर देता है। सरल बनाने के लिए की तरह कुछ:जावा में स्थिर सहायक विधियों का उपयोग क्यों खराब है?
public class ApiCaller {
...
public static String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
यह सब मैं क्या करना है का उपयोग करने के कॉल ApiCaller.makeHttpCall(url)
अब मैं आसानी से इस तरह एक गैर स्थिर विधि बना सकता है:
public class ApiCaller {
...
public String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
और उसके बाद इस विधि का उपयोग करने के लिए new ApiCaller().makeHttpCall()
पर कॉल करें लेकिन यह सिर्फ अतिरिक्त ओवरहेड जैसा लगता है। क्या कोई यह समझा सकता है कि यह क्यों बुरा है और यदि विधियों को गैर स्थैतिक बनाने के लिए कोई बेहतर समाधान है (केवल कीवर्ड को हटाने के अलावा) ताकि मैं मॉकिंग फ्रेमवर्क का उपयोग करके इन तरीकों को रोक सकूं?
धन्यवाद!
स्थिर विधि के साथ बिल्कुल कुछ भी गलत नहीं है, अगर यह "शुद्ध" फ़ंक्शन है, या यदि यह केवल "सिस्टम" सामग्री का संदर्भ देता है जैसे कि इसमें कोई स्थानीय स्थिति नहीं है। यदि यह ग्लोबल्स का संदर्भ दे रहा है, तो आपको थोड़ी अधिक सावधानीपूर्वक चलने की जरूरत है। –
@ हॉटिक्सिक्स "सिस्टम स्टफ" के कुछ उदाहरण क्या हैं? इसके अलावा, स्थानीय राज्य के कुछ उदाहरण क्या हैं? क्या फाइल सिस्टम स्थानीय स्थिति के रूप में गिना जाता है? क्या कोई वेबसाइट है? –
"सिस्टम स्टफ" हो सकता है, उदाहरण के लिए, प्रक्रिया भंडारण आंकड़ों को पुनर्प्राप्त करना या दिन या कुछ ऐसा समय लेना। "स्थानीय स्थिति" का तात्पर्य यह है कि विधि 'स्थिर' या कुछ ऐसे में डेटा को छेड़छाड़ कर रही है - यह वास्तव में एक वस्तु है जो होने का नाटक करती है। –