8

में खाली विधि मैंने अपने जावा प्रोजेक्ट का विश्लेषण करने के लिए अभी पीएमडी स्थापित किया है। वास्तव में अच्छा उपकरण, अत्यधिक अनुशंसित। फिर भी, मुझे मिल गया में कुछ त्रुटियों कह रही:एक अमूर्त वर्ग

"एक अमूर्त वर्ग में एक खाली विधि सार होना चाहिए बजाय"

मैं PMD प्रलेखन की जाँच की और स्पष्टीकरण का कहना है:

डेवलपर इस खाली कार्यान्वयन पर बजाय भरोसा कर सकते हैं कोड के रूप में उपयुक्त एक

इसलिए मुझे लगता है कि मैं इस कोड शैली त्रुटि के पीछे कारण समझता हूं, लेकिन निम्नलिखित परिदृश्य पर विचार करें: मेरे पास एंटिटी नामक एक अमूर्त वर्ग है। इस वर्ग में डिफ़ॉल्ट कार्यान्वयन के साथ एक बूलियन विधि है। (नियंत्रित करता है कि हटाने पर अपनी संबंधित इकाइयों को हटाना है या नहीं)। व्युत्पन्न कक्षाओं में से केवल कुछ ही इस डिफ़ॉल्ट व्यवहार को सही पर ओवरराइड करते हैं।

क्या मुझे डिफ़ॉल्ट कार्यान्वयन को हटा देना चाहिए और अपने व्यवहार की घोषणा करने के लिए सभी व्युत्पन्न कक्षाओं को मजबूर करना चाहिए? क्या आपको सच में लगता है कि यह पैटर्न इतना बुरा अभ्यास है?

स्पष्टीकरण: पीएमडी एक वापसी विधि के साथ एक विधि का इलाज खाली के रूप में करता है।

उत्तर

9

मुझे लगता है कि यह सिर्फ एक दिशानिर्देश है। यह आपको बताता है कि आप अपने डिजाइन पर पुनर्विचार करना चाहेंगे, लेकिन यदि आपका डिज़ाइन पहले से ही सही समझ में आता है, तो आपके दिमाग की बजाय सॉफ़्टवेयर का पालन करने का कोई कारण नहीं है।

0

जब आपकी विधि का डिफ़ॉल्ट कार्यान्वयन होता है, तो यह खाली नहीं होता है? या मुझे कुछ याद आती है?

मेरे लिए, एक खाली विधि इस प्रकार है:

public void EmptyMethod() 
{} 
+5

, PMD एक विधि है कि केवल भी खाली के रूप में बुलियन या अशक्त रिटर्न व्यवहार करता है – LiorH

0

आप जावा 1.8 पर हैं, तो आप इकाई एक इंटरफ़ेस के बजाय एक अमूर्त वर्ग बनाने के लिए और उस में अपने विधि के लिए एक डिफ़ॉल्ट कार्यान्वयन लिख सकते हैं।

public interface Entity { 
    default boolean yourMethod() { 
     //default implementation ... 
    } 
} 

आप संदर्भ के लिए इस का उपयोग कर सकते हैं: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

अच्छी तरह से
संबंधित मुद्दे