मेरे लिए, किसी चीज के लिए एक अच्छा नाम ढूंढना हमेशा एक ऐसी वस्तु के रूप में सोचता है, जिसे अपने अस्तित्व का औचित्य साबित करना है। अपने आप से पूछो:
- वर्ग / विधि / चर क्या करता है, अर्थात इसका व्यापक उद्देश्य क्या है और यह किसके लिए है?
- विशेष रूप से इसके उद्देश्य के बारे में क्या यह संवाद करने की आवश्यकता है, यानी यह आवश्यक हिस्सा क्या है कि नाम इसमें होना चाहिए?
ज्यादातर डेवलपर्स सहमत होंगे कि नामकरण की बात आने पर पठनीयता हमेशा महत्वपूर्ण होती है। कोड न लिखें, ताकि आप जान सकें कि आप इसे लिखते समय क्या मतलब रखते हैं, इसे लिखें, ताकि भविष्य में किसी बिंदु पर पहली बार कोड को देखने वाला कोई व्यक्ति जानता हो कि आपके पास बहुत ज्यादा सोचने के बिना क्या मतलब है। आप कोड को केवल एक बार लिखेंगे, लेकिन अपने जीवनकाल के दौरान यह सबसे अधिक बार संपादित किया जाना होगा और इससे भी अधिक बार पढ़ा जाएगा।
कोड स्व-दस्तावेजी होना चाहिए, अर्थात्, आपके नामकरण को यह स्पष्ट करना चाहिए कि कुछ क्या करता है। यदि आपको यह समझाने की आवश्यकता है कि एक टिप्पणी में कोड की एक पंक्ति क्या करती है, और चीजों का नाम बदलने से इसे पर्याप्त रूप से सुधार नहीं होता है, तो आपको गंभीरता से एक उचित वर्णनात्मक नाम के साथ एक नई विधि में उस रेखा को फिर से भरने पर विचार करना चाहिए, ताकि मूल विधि को पढ़ा जा सके। नया तरीका कॉल बताता है कि क्या हो रहा है। लंबे नाम रखने से डरो मत; बेशक आपको क्लास / मेथड / वैरिएबल नामों में उपन्यास नहीं लिखना चाहिए, लेकिन मेरे पास एक ऐसा नाम होगा जो बहुत छोटा होने की तुलना में बहुत लंबा और वर्णनात्मक होगा और मुझे यह पता लगाने की जरूरत है कि यह हुड के नीचे देखकर क्या करता है। कुछ स्पष्ट अपवादों जैसे कि x / y निर्देशांक और आमतौर पर उपयोग किए जाने वाले योगों को छोड़कर, एकल-वर्ण नाम और संक्षिप्तिकरण से बचें। "बैकबटन" के बजाय कुछ "bkBtn" कॉल करना
आपकी भाषा जितनी अनुमति देती है, अपने कोड को अंग्रेजी वाक्य की तरह पढ़ें। वस्तुएं संज्ञा का उपयोग करती हैं, विधियां क्रियाओं का उपयोग करती हैं। बूलियन विधियां आमतौर पर "is" के साथ शुरू होती हैं, लेकिन कई अन्य विकल्प हैं जो अर्थ को और भी बेहतर बताते हैं, उपयोग के मामले पर निर्भर करता है, जैसे कि "कैन", "चाहिए", या "करता है"। बेशक, सभी भाषाएँ इस पर स्मॉलटाक के रूप में अच्छी नहीं हो सकती हैं, लेकिन कुछ प्रतीकों को आमतौर पर वाक्य के कुछ हिस्सों के रूप में समझा जाता है। दो छोटे-छोटे सम्मेलन जिन्हें मैं व्यक्तिगत रूप से अन्य भाषाओं में लेना चाहता हूं, "प्रत्येक" के साथ लूप मापदंडों के नाम को उपसर्ग कर रहे हैं, और संग्रह के साथ लेख "ए" (या "ए", या "कुछ") के साथ विधि मापदंडों को उपसर्ग कर रहे हैं। । यह जावा में एक सामान्य मानक नहीं हो सकता है, और किसी का भी इस बिट को अनदेखा करने का स्वागत है, लेकिन मुझे लगता है कि यह कोड की पठनीयता को बढ़ाता है। उदाहरण के लिए (जावा में उदाहरण):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
यह कुछ इस तरह से जावा के ज्ञान के एक बिट के साथ लोगों के लिए पठनीय होना चाहिए:
यह निर्धारित करने के लिए कि क्या आपको कुछ नामों की सूची पर विचार करना चाहिए (जो तार हैं), कुछ नामों पर पुनरावृति, और प्रत्येक नाम के लिए, यह निर्धारित करें कि क्या यह बहुत लंबा है; यदि ऐसा है, तो वापस लौटें true
; यदि कोई बहुत लंबा नहीं है, तो वापस लौटें false
।
उपर्युक्त कोड का विरोध केवल तर्क strings
और पाश चर के नामकरण के साथ करें string
, विशेष रूप से अधिक जटिल विधि में। नाम पर एक नज़र से उपयोग स्पष्ट होने के बजाय आपको अंतर देखना होगा।