मैं कुछ महीने पहले कोड का एक गुच्छा लिख रहा था और अब मैं इसमें सामान जोड़ रहा हूं। मुझे एहसास हुआ कि मैंने उन कार्यों का एक समूह लिखा है जो एक वर्ग से निकलती हैं जिसमें इसके कार्यों के लगभग 2/3s सार और शेष 1/3 वर्चुअल हैं।डेल्फी: रखरखाव वर्चुअल बनाम आभासी सार
मैं बहुत ज्यादा देखने के बीमार हूँ:
function descendent.doSomething() : TList;
begin
inherited;
end;
जब मैं आधार वर्ग के लिए यह मिल गया है:
function descendent.doSomething() : TList;
begin
result := nil;
end;
और साथ हवा नहीं चाहते:
function descendent.doSomething() : TList;
begin
end;
और फिर आश्चर्य की बात क्यों कुछ काम नहीं किया।
मुझे सार कार्यों का उपयोग करना पसंद है क्योंकि संकलक आपको बताएगा कि क्या आप एक अमूर्त त्रुटि प्राप्त करने के लिए उत्तरदायी हैं क्योंकि आपने कुछ कार्यों को लागू नहीं किया है।
मेरा प्रश्न है, क्योंकि मैं अभी भी अपेक्षाकृत नया डेल्फी प्रोग्रामर हूं और मुझे कभी भी 8 साल तक कुछ भी बनाए रखना नहीं है, इसलिए इस समय prune your code पर समय लेना उचित है (यानी उन कार्यों को हटाएं जो अभी विरासत में हैं उनमें और अपने बेस क्लास फ़ंक्शंस को अमूर्त से कंक्रीट में बदलें)
मैं बस सोच रहा हूं कि मेरा अपवर्तक वास्तव में अपवर्तक है, या सिर्फ दिक्कत है। अधिकांश भाग के लिए, कोड को रखने के लिए यह आसान होगा और डेल्फी को मेरे कार्यों को विरासत में स्वतः पूर्ण करने दें और डेल्फी मुझे चेतावनी दें जब एक अमूर्त कार्य लागू नहीं किया जाता है। एकमात्र कारण यह है कि मैं इसे बदल दूंगा क्योंकि जब मैं नए बाल वर्ग जोड़ता हूं, तो मैं एक विशाल इंटरफ़ेस अनुभाग की प्रतिलिपि बना रहा हूं और चिपका रहा हूं (जो कुछ भी नहीं कर रहा है लेकिन हूगर प्राप्त कर रहा है) –