कार्यों के साथ क्रियाओं का उपयोग करें, वर्गों के साथ संज्ञाएं - इंटरफेस के बारे में क्या? [बन्द है]


23

ठीक है, मैं कक्षाओं के साथ कार्यों और संज्ञाओं के साथ क्रियाओं का उपयोग करने के सामान्य सम्मेलनों को समझता हूं। इंटरफेस के बारे में क्या? क्या इंटरफ़ेस नाम के साथ आने पर कोई कार्यप्रणाली है जो कि स्पष्ट नहीं हो सकती है?

बस इसे स्पष्ट करने के लिए, मैं इस बारे में बात नहीं कर रहा हूं कि नाम के सामने "आई" डाल दिया जाए या फिर कैमलकेस या पास्कलकेस का उपयोग किया जाए। मैं एक इंटरफ़ेस के लिए एक स्पष्ट, शब्दार्थ नाम का पता लगाने की विधि के बारे में सोच रहा हूं।

संपादित करें मैं स्पष्ट तरीके से एक इंटरफ़ेस का नाम कैसे दे रहा हूं, इस पर ध्यान दे रहा हूं। मुझे लगता है कि इसे सिर्फ एक संज्ञा होने की भी आवश्यकता है क्योंकि जब मैं कक्षाओं के नाम के बारे में सोचता हूं तो मुझे लगता है कि यह निकटतम "वास्तविक" विश्व वस्तु से संबंधित हो सकता है। मुझे लगता है कि असली दुनिया इंटरफेस एक कीबोर्ड, माउस, रिमोट कंट्रोल, एटीएम स्क्रीन जैसी चीजें हैं। वे सभी संज्ञाएं हैं। किसी भी तरह, इंटरफ़ेस नाम तैयार करने के लिए एक अच्छा तरीका पर किसी भी अतिरिक्त अंतर्दृष्टि की सराहना की जाएगी।


2
हम्म .. शीर्षक के आधार पर, मुझे लगा कि यह प्रोग्रामिंग और अंग्रेजी के बीच भाषण के कुछ हिस्सों की बराबरी करने वाला है। जिस स्थिति में, मैडलिब संभव लगते हैं।
इज़काता

याद रखें, जब आप एक वर्ग बनाते हैं, तो आप उस वर्ग द्वारा त्वरित वस्तुओं के लिए एक इंटरफ़ेस भी बना रहे होते हैं ... या इसे दूसरे तरीके से रखने के लिए, कक्षाओं को इंटरफेस का एहसास होता है। इसलिए, उन्हें समान नामकरण सम्मेलन का उपयोग करना चाहिए।
डैनियल टी।

इसके अलावा, IMHO "कार्यों के साथ क्रिया का उपयोग करें" बहुत सामान्य है। आपको कमांड और संज्ञा के साथ क्रियाओं का उपयोग प्रश्नों के साथ करना चाहिए ।
डैनियल टी।

जवाबों:


21

मैं कहूंगा कि यह इस बात पर निर्भर करता है कि इंटरफ़ेस क्या परिभाषित करता है। कुछ मामलों में जब इंटरफ़ेस बल्कि विशिष्ट और विस्तृत होता है, मुझे लगता है कि एक संज्ञा सर्वोत्तम है। उदाहरण हैं IList, ICollection

कभी-कभी यद्यपि एक इंटरफ़ेस कुछ सामान्य सुविधाओं को एक वर्ग में जोड़ने के बारे में अधिक होता है। उस मामले में मुझे लगता है कि एक विशेषण सबसे अच्छा है। उदाहरण हैं IDisposable, IEnumerable...

शायद इस बारे में सोचने का एक और तरीका है कि आपका इंटरफ़ेस कितनी "क्षमताओं" को परिभाषित करता है।

उदाहरण के लिए, IList<T>इंटरफ़ेस इन क्षमताओं को परिभाषित करता है: Add, Clear, Contains, Insert, Remove, ... ये सभी एक सूची के गुण हैं इसलिए IListएक अच्छा नाम है।

IDisposableदूसरी ओर केवल एक क्षमता को परिभाषित करता है: निपटान। तो यह किसी भी चीज के लिए अनुकूल है जो डिस्पोजेबल है। इसलिए नाम IDisposable


10
मैं एक "_able" विशेषण का उपयोग करने का सुझाव दूंगा यदि आपका इंटरफ़ेस उन चीज़ों के नाम पर रखा जाएगा जो आपकी वस्तु के लिए किया जा सकता है (जैसे IEnumerable), एक "_er" संज्ञा यदि आपका इंटरफ़ेस उन चीजों के नाम पर रखा जाएगा जो आपकी वस्तु अन्य वस्तुओं ( उदाहरण के लिए IEqualityComparer), और एक सामान्य संज्ञा यदि आपका इंटरफ़ेस एक प्रकार की चीज़ के नाम पर है जिसका व्यवहार इसकी नकल करता है (जैसे IList<T>)।
सुपरकैट

@Supercat द्वारा टिप्पणी को वास्तव में इस उत्तर में शामिल किया जाना चाहिए। यह बहुत समझ में आता है।
निखिल वर्तक

वास्तव में इंटरफ़ेस नाम के साथ उपसर्ग करना Iबेमानी है।
user1870400

5

एक इंटरफ़ेस व्यवहार का वर्णन करता है इसलिए नामों को ऐसा कहना चाहिए। मैं इसके लिए एक नियम के बारे में निश्चित नहीं हूं लेकिन जब आप इसे सुनेंगे तो आपको नाम पता चल जाएगा।

कुछ उदाहरण:

Flyable      - Can Fly
Workable     - Can work
Negotiatable - Can negotiate.

मुझे लगता है कि एक डेवलपर के रूप में, इंटरफेस के साथ नाम Iऔर कॉल Setकरना उचित नहीं ISetहै, आपको चिंतित नहीं होना चाहिए कि यह एक इंटरफ़ेस है या एक क्लास है। मैं देख रहा हूं कि यह प्रथा जावा में अब मौजूद नहीं है।


+1 के लिए "एक डेवलपर के रूप में आपको चिंतित नहीं होना चाहिए इट्टर एस एक इंटरफ़ेस या एक वर्ग।"
19

"एक डेवलपर के रूप में आपको चिंतित नहीं होना चाहिए कि क्या यह एक इंटरफ़ेस या एक वर्ग है" - असहमत क्योंकि अगर यह एक इंटरफ़ेस है तो आपको यह जानना होगा कि आपको किन सदस्यों को लागू करना चाहिए।
मैक्सिमस मिनिमस

@MaximusMinimus के साथ उपसर्ग करना Iबेमानी है। तो फिर क्यों नहीं उपसर्ग अमूर्त वर्ग के साथ A, नियमित कक्षाएं Cआदि के साथ ??
user1870400

@ user1870400 - सच है, लेकिन यह वह हिस्सा नहीं है जिससे मैं असहमत हूं।
मैक्सिमस मिनिमस

4

चूँकि एक इंटरफ़ेस वास्तव में एक प्रकार के "क्या" लेकिन "कैसे" का केवल एक अभिव्यक्ति है, मैं उन्हें उसी तरह से नाम दूंगा जैसे कि आप कक्षाओं का नाम देते हैं, कम से कम भाषण परिप्रेक्ष्य के कुछ हिस्सों से। केवल एक चीज जो मैं इसमें जोड़ सकता हूं, वह यह है कि वे अक्सर विशिष्ट कार्यान्वयनकर्ताओं की तुलना में अधिक सामान्य हो जाते हैं (उदाहरण के लिए "ग्राहक" इंटरफ़ेस में "प्रॉस्पेक्टिव कस्टूमर" और "पेइंगकास्टूकर" कार्यान्वयनकर्ता) हो सकते हैं।


0

एक इंटरफ़ेस एक वर्ग की तरह प्रयोग किया जाता है। इसलिए, जब आप संज्ञाओं के साथ कक्षाओं का नाम देते हैं, तो इसे संज्ञा के साथ भी नामित किया जाना चाहिए। अमूर्त संज्ञाओं को प्राथमिकता दें, उदाहरण के लिए "वाहन" जब कक्षाएं "कार" और "ट्रक" होती हैं।


0

त्वरित उत्तर: इंटरफ़ेस एक के अलावा के बारे में अधिक है सेट क्षमताओं, सुविधाओं, आम सीमाओं या अंतर सम्बन्ध संस्थाओं, कक्षाएं, मॉडल, अवधारणाओं, आदि के बीच की ..

कक्षाओं और संस्थाओं के साथ सामान्य व्यवहार को जोड़ने के बारे में बात, और फिर एक अच्छा सार्थक नाम असली विशेषताओं के सेट की पहचान करने के लिए आएगा।

इंटरफ़ेस नामकरण जैसे: IStateMachineBuilder, IUserContextProviderBuilder, IEntityBuilderBuilder, IActiveAware, etc.संभवतः अवधारणा की व्याख्या करें।


1
हां, इंटरफेस अनुबंध या क्षमताओं का प्रतिनिधित्व करते हैं; बहुत अच्छी तरह से जाना जाता है। लेकिन यह इस सवाल का जवाब कैसे देता है कि उनका नाम कैसे रखा जाए? उस संबंध में आप वास्तव में कह रहे हैं, "इसके बारे में सोचें, और प्रेरणा आपको हड़ताल कर देगी।" यह कोई सिफारिश नहीं देता है, उदाहरण के लिए, निम्न नामों में से IStateMachineBuilderIBuildStateMachineICanBuildStateMachine
किसे

0

यह निर्भर करता है, यदि इंटरफ़ेस में केवल विधियाँ हैं, तो इसे "क्रिया" जैसी क्रियाओं का उपयोग करके नाम देना अच्छा होगा, जहाँ अगर यह एक सामान्य वर्ग का प्रतिनिधित्व करता है, जिसमें स्थैतिक, अंतिम क्षेत्र शामिल हैं, तो हम "वाहन" की तरह एक सामान्य संज्ञा का उपयोग कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.