एक अजीब, खुला सवाल है, लेकिन यह एक ऐसी समस्या है, जिसका मैं हमेशा से विरोध कर रहा हूं:
सॉफ्टवेयर जिसे बनाए रखना आसान है और इसके साथ काम करना आसान है। एक डिजाइन को सहज बनाने की कोशिश करने का मतलब है कि अपने घटकों का नामकरण इस तरह से किया जाए कि अगला डेवलपर घटक के कार्य को समझने में सक्षम हो। यही कारण है कि हम अपनी कक्षाओं का नाम "टाइप 1", "टाइप 2" आदि नहीं रखते हैं।
जब आप वास्तविक दुनिया की अवधारणा (उदाहरण के लिए ग्राहक) का निर्माण कर रहे होते हैं, तो यह आमतौर पर वास्तविक दुनिया की अवधारणा के बाद अपने प्रकार का नामकरण के रूप में सरल होता है। लेकिन जब आप अमूर्त चीजों का निर्माण कर रहे होते हैं, जो अधिक प्रणाली-उन्मुख होते हैं, तो उन नामों से बाहर भागना बहुत आसान होता है जो पढ़ने में आसान होते हैं और पचाने में आसान होते हैं।
यह खराब हो जाता है (मेरे लिए) प्रकार के परिवारों के नाम की कोशिश करते समय, बेस-टाइप या इंटरफ़ेस के साथ जो बताता है कि घटकों को क्या करना है, लेकिन यह नहीं कि वे कैसे काम करते हैं। यह स्वाभाविक रूप से कार्यान्वयन के स्वाद (उदाहरण के लिए IDataConnection
और SqlConnection
.NET फ्रेमवर्क) में वर्णन करने की कोशिश कर रहे प्रत्येक व्युत्पन्न प्रकार की ओर जाता है , लेकिन आप "प्रतिबिंब द्वारा काम करता है और विशिष्ट विशेषताओं के लिए खोज" जैसे कुछ जटिल कैसे व्यक्त करते हैं?
उसके बाद, आप अंततः प्रकार आपको लगता है के लिए एक नाम चुन लेने पर जब यह बताता है कि यह करने के लिए कोशिश कर रहा है, अपने सहकर्मी पूछता है "WTF इस करता है DomainSecurityMetadataProvider
वास्तव में करते हैं? "
क्या घटक के लिए एक अच्छी तरह से नाम का चयन करने के लिए कोई अच्छी तकनीक है, या घटकों के परिवार का निर्माण कैसे किया जा सकता है?
क्या कोई सरल परीक्षण है जिसे मैं नाम के लिए बेहतर महसूस करने के लिए नाम पर लागू कर सकता हूं कि क्या नाम "अच्छा" है, और दूसरों के लिए अधिक सहज होना चाहिए?