मैं एक सहायक वर्ग बनाना चाहता हूं जो फ़ॉर्मेटिंग से संबंधित है (यानी विराम चिह्न को हटाने और प्रकारों के बीच रूपांतरित करने के साथ-साथ नामों को दोबारा बदलने के तरीके भी हैं)। ऐसा प्रतीत नहीं होता है कि इसे किसी भी फ़ील्ड की आवश्यकता होगी - इसका एकमात्र उद्देश्य पारित चीजों को परिवर्तित करने और उन्हें वापस करने के लिए, सुधारित करना है। क्या एक कन्स्ट्रक्टर छोड़ना बुरा व्यवहार है? यदि हां, तो मेरा कन्स्ट्रक्टर क्या कर रहा है? मैं this link पर देख रहा था और देखा कि जिस वर्ग में इसका वर्णन किया गया है वह एक निर्माता का अभाव है।जावा - क्या यह खराब अभ्यास है कि क्लास कन्स्ट्रक्टर न हो?
उत्तर
यह बुरा व्यवहार एक निर्माता बाहर छोड़ने के लिए है?
हाँ - क्योंकि जब तक आप किसी भी कंस्ट्रक्टर्स निर्दिष्ट करते हैं, जावा कम्पाइलर आप वर्ग को उसी दृश्यता के साथ एक निर्माता दे देंगे।
मान लिया जाये कि सभी अपने तरीके स्थिर कर रहे हैं - जो संभावना लगती है, जब तक आप बहुरूपता चाहते हैं - आप अपनी कक्षा final
बनाने के लिए और यह एक private
निर्माता देना चाहिए, ताकि अन्य डेवलपर्स नहीं गलती से कर अपने वर्ग का एक उदाहरण बनाने के लिए, जब वह व्यर्थ होगा। जब एक एपीआई के बारे में सोच, किसी भी समय मैं क्षमता डेवलपर्स के लिए कुछ बेवकूफ ऐसा करने के लिए निकाल सकते हैं, मैं ऐसा :)
तो जैसे कुछ:
public final class Helpers {
private Helpers() {
}
public static String formatDate(Date date) {
// etc
}
}
ध्यान दें कि समीकरण से बहुरूपता लेने के द्वारा, आप परीक्षणों के लिए इस व्यवहार को बदलने की संभावना को भी हटा रहे हैं। यह ठीक हो सकता है - मैं "कोई स्थिरता, कभी नहीं" में विश्वास नहीं कर रहा हूं - लेकिन यह विचार करने योग्य है।
कोई भी वर्ग जिसमें सभी विधियों की आवश्यकता नहीं है या किसी भी राज्य की आवश्यकता नहीं है कन्स्ट्रक्टर निजी बनाकर कन्स्ट्रक्टर की दृश्यता को कम करने के लिए स्वतंत्र है।
उदाहरण java.lang.Math जावा में कक्षा।
java.lang.Math
रूप सभी स्थैतिक तरीकों जो अपने वर्ग के रूप में इसी तरह के काम करते हैं वे इतनी है कि कोई भी गलती से उस वर्ग के उदाहरण बना सकते हैं private
के रूप में निर्माता की घोषणा कर दी है।
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
बुरा व्यवहार नहीं है। लेकिन आपके द्वारा दिए गए उदाहरण में कोई सदस्य चर नहीं है जिसका उपयोग किसी ऑब्जेक्ट संदर्भ में किया जा सकता है। ऐसी परिस्थितियों में, स्थिर विधियों के लिए सबसे अच्छा है क्योंकि तब आपको विधियों को कॉल करने से पहले कक्षा के लिए ऑब्जेक्ट बनाने के लिए स्मृति आवंटित करने की आवश्यकता नहीं है।
आमतौर पर यह कक्षा में आपके कन्स्ट्रक्टर को परिभाषित करने के लिए एक अच्छा कोडिंग अभ्यास है हालांकि प्रत्येक वर्ग में एक डिफ़ॉल्ट कन्स्ट्रक्टर होता है।
लेकिन अगर आपके पास ओवलोडेड कन्स्ट्रक्टर का उपयोग करने या किसी भी सिंगलटन पैटर्न को बनाने की कोई विशेष आवश्यकता नहीं है तो आप कन्स्ट्रक्टर को हटा सकते हैं।
यदि आप अपने मामले में स्थिर तरीकों का उपयोग कर रहे हैं तो आपको कन्स्ट्रक्टर को परिभाषित करने की कोई आवश्यकता नहीं है, क्योंकि आपको इस वर्ग की वस्तु रखने की आवश्यकता नहीं है।
कंपाइलर आपके लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर (कोई पैरामीटर नहीं) उत्पन्न करेगा।यदि आपकी कक्षा ने कक्षा को विस्तारित नहीं किया है और प्रारंभिक आवश्यकता की आवश्यकता नहीं है, तो आप इसे स्पष्ट कन्स्ट्रक्टर
कोई कन्स्ट्रक्टर छोड़ने के लिए अच्छा नहीं है क्योंकि आपकी कक्षा में कोई इंस्टेंस चर नहीं है!
रचनाकारों का उदाहरण आवृत्ति चर शुरू करने के लिए है!
अभी भी अगर आप कन्स्ट्रक्टर को छोड़ते हैं, तो कंपाइलर किसी भी तरह से डिफॉल्ट कन्स्ट्रक्टर को सम्मिलित करता है जो काफी उचित है !!
- 1. php सिंगलटन डेटाबेस कनेक्शन, क्या यह कोड खराब अभ्यास है?
- 2. जावा अपवाद लपेटना: खराब अभ्यास?
- 3. जावा क्लास कन्स्ट्रक्टर
- 4. जावा - क्या यह अच्छा प्रोग्रामिंग अभ्यास है?
- 5. क्या यह सच है कि कन्स्ट्रक्टर ऑब्जेक्ट देता है?
- 6. जावा स्कैनर क्लास खराब चरित्र "®"
- 7. `यह` और एक क्लास कन्स्ट्रक्टर
- 8. क्या यह जावा क्लास धागा सुरक्षित है?
- 9. निर्भरता इंजेक्शन और अन्य कन्स्ट्रक्टर पैरामीटर - खराब अभ्यास?
- 10. जावा: ऑब्जेक्ट क्लास में एक कन्स्ट्रक्टर है?
- 11. क्लास कन्स्ट्रक्टर
- 12. कन्स्ट्रक्टर में सेटर विधियों का उपयोग करना: खराब अभ्यास?
- 13. जावास्क्रिप्ट खराब अभ्यास
- 14. यह सुनिश्चित करने के लिए कि जावा क्लास
- 15. क्यों -compile (export_all) खराब अभ्यास है?
- 16. इस तरह के जावा अपवाद शैली खराब अभ्यास है?
- 17. मैं यह जानना चाहता हूं कि कोई JVM क्लास एक कोटलिन क्लास है या नहीं
- 18. यूआरएल पोस्ट खराब खराब अभ्यास एनकोडेड?
- 19. क्या कन्स्ट्रक्टर में अपवाद हैंडलिंग डालना अच्छा अभ्यास है?
- 20. एक कैच-ऑल ऐपटूलबॉक्स क्लास बनाना - क्या यह एक बुरा अभ्यास है?
- 21. क्या यह एक खराब डिजाइन है?
- 22. जावा इसे कन्स्ट्रक्टर
- 23. जावा क्लास गतिशील रूप से कन्स्ट्रक्टर पैरामीटर
- 24. क्या जावा बीन्स डाटा स्टोरेज क्लास खराब डिज़ाइन के रूप में हैं?
- 25. क्लास कन्स्ट्रक्टर
- 26. डेल्फी कन्स्ट्रक्टर और क्लास कन्स्ट्रक्टर
- 27. कैसे बताएं कि जावा क्लास सार है?
- 28. क्या यह जावा GZipInputStream क्लास में एक बग है?
- 29. जीसन सीरियलइज फ़ील्ड केवल तभी नहीं है जब शून्य न हो या खाली न हो
- 30. क्या यह "खराब अभ्यास" एक्सएमएल दस्तावेज़ों में लाइनब्रेक्स के प्रति संवेदनशील होने के लिए है?
+1 निजी कन्स्ट्रक्टर की सिफारिश के लिए +1। –
मैंने कुछ सीखा :) – kishu27
धन्यवाद! मैंने कभी (जावा के साथ अपने बहुत संक्षिप्त अनुभव में) एक निजी कन्स्ट्रक्टर को पहले कभी नहीं देखा है, इसलिए यह भी दिलचस्प और सहायक है। –