जावा में, निजी सहायकों को सार्वजनिक तरीकों से ऊपर या नीचे जाना चाहिए? [बन्द है]


24

मैंने देखा है कि हमारे सहपाठियों के तरीकों के क्रम के बारे में एक सहकर्मी और मेरे विपरीत व्यवहार हैं। हम में से एक अपने प्रमुख सार्वजनिक तरीकों के साथ एक वर्ग शुरू करता है, और फिर बाद में सभी निजी सहायकों को डाल देता है। हम में से अन्य यह सुनिश्चित करता है कि सार्वजनिक विधियाँ बहुत ही अंत में हैं।

जाहिर है, यह सिर्फ एक शैली का मुद्दा है और कोई सही जवाब नहीं है। हालांकि, इससे पहले कि हम तय करें कि यह मामला सिर्फ एक और Yooks बनाम Zooks लड़ाई है और सिर्फ एक या दूसरे को मनमाने ढंग से उठाएं, मैं सोच रहा था कि शायद एक मानक जावा स्टाइल गाइड सिफारिश या कुछ व्यावहारिक कारण था कि एक दृष्टिकोण दूसरे से बेहतर क्यों है।


13
इससे कोई फर्क नहीं पड़ता। सिक्का उछालो। एक चुनें। इसके साथ बने रहें।


@KilianFoth - यह सवाल 3 महीने पहले पूछा गया था और इसके अधिक जवाब हैं। क्या यह प्रश्न में प्रश्न को इस प्रश्न का डुप्लिकेट नहीं बना देगा?
ब्रैंडन यारब्रॉट

जवाबों:


25

हालांकि यह सामान्य रूप से वरीयता के लिए नीचे आता है, आपको निश्चित रूप से अपने संगठन के भीतर एक सामान्य मानक का पालन करने का प्रयास करना चाहिए। इसलिए जो भी आप तय करते हैं, एक मानक चुनें और सार्वभौमिक रूप से इसे अपनाएं।

किसके लिए चयन करना है, यदि आप क्लीन कोड में दिए गए सुझावों का पालन करते हैं, तो आप एक अखबार के लेख की तरह ऊपर से नीचे तक फ़ाइल को पढ़ सकेंगे, जो स्वाभाविक रूप से यह सुझाव देगा कि सहायक विधियाँ उन तरीकों के बाद दिखाई देती हैं जो वे हैं मदद कर रहा है। इससे कोड संरचना की अधिकतम पठनीयता हो जाएगी। तो अगर आपके पास होता

public void doSomething()
{
     helpMe();
     helpMeAgain();
}

आपकी फ़ाइल के रूप में संरचित किया जाएगा

public void doSomething() { }
private void helpMe() { }
private void helpMeAgain() { }

इसका एक और दुष्परिणाम यह है कि आपको पता चलता है कि आपके सहायकों के पास अपने स्वयं के सहायक हैं, और इससे आपको यह पता लगाने में मदद मिलती है कि आपके पास वास्तव में क्या है, आपकी फाइल के भीतर रहने वाला एक अन्य वर्ग है, और आप इसे अपने तरीके से अपनी कक्षा में निकालने के लिए साफ-साफ रिफ्लेक्टर कर सकते हैं। पहले से ही क्रम में एक साथ समूहीकृत। लेकिन यह एक माध्यमिक लाभ है।


खुशी है कि आपने यह कहा या फिर मैं होता। मैंने खुद बॉब मार्टिन से पूछा था कि अगर 2 तरीके से प्रत्येक 3 तरीके का उपयोग करता है तो वह चीजों को कैसे आदेश देता है। उस स्थिति में वह तीसरे को अन्य दो से नीचे रखता है।
डैनियल कपलान

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

@ सीन, ठीक है, मैं आमतौर पर या तो अपनी कक्षा के सार्वजनिक एपीआई को सीमित करने की कोशिश करता हूं, या इसे एक मुखौटा के रूप में छोड़ देता हूं यदि उपयुक्त हो, लेकिन फिर कार्यान्वयन सहायकों को सहयोगी के रूप में बंद कर दें। टेस्ट, रिफ्लेक्टर, एक्सट्रैक्ट, रिपीट। लेकिन यह निश्चित रूप से इस बात पर निर्भर करता है कि आप कितनी दूर जाना चाहते हैं। मैं अपनी कक्षाएं छोटी पसंद करता हूं।
एंथनी पेग्राम

11

सार्वजनिक विधियाँ कक्षा का इंटरफ़ेस हैं। आपकी कक्षा का उपयोग करने में रुचि रखने वाला कोई व्यक्ति केवल इंटरफ़ेस के बारे में ध्यान रखेगा। कक्षा उपयोगकर्ता के दृष्टिकोण से, स्क्रॉलिंग को कम करने के लिए पहले सार्वजनिक तरीकों का होना उपयोगी होगा।


5

C और C ++ में, सहायक विधियों को अक्सर पहले रखा जाता है क्योंकि तब आपको घोषणा की आवश्यकता नहीं होती है। बहुत से लोगों ने उस आदत को अन्य भाषाओं में ले लिया जहां यह कोई फर्क नहीं पड़ता।

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


2

मुझे पठनीयता और संदर्भ के आधार पर कक्षा में विधियों का क्रम पसंद है, दृश्यता नहीं।

अर्थात एक 'ओपन' विधि संभवतः 'क्लोज' से पहले की है। यदि दो सार्वजनिक विधियाँ 'a' और 'b' एक निजी 'c' कहती हैं, और वे इसे कॉल करने वाले एकमात्र व्यक्ति हैं - तो मुझे उनके बगल में रहना 'c' पसंद है।

मुझे नहीं लगता कि दृश्यता के आधार पर विधि के आदेश का एक सम्मेलन एक अच्छी बात है।


1

मैं अपनी कक्षाओं को प्राथमिकता देना पसंद करता हूं जहां सदस्यों को महत्व / दृश्यता के क्रम में सूचीबद्ध किया जाता है (यहां महत्व से मेरा मतलब है कि सार्वजनिक इंटरफ़ेस पर सीधा प्रभाव पड़ता है)।

इस प्रकार निजी कार्यों को नीचे धकेलने की प्रवृत्ति होती है।

इसके अपवाद भी हैं जहाँ मैं समान कार्यकलापों को एक साथ समूहित करूँगा ताकि सार्वजनिक सामानों के साथ छोटे निजी कार्यों को करना अभी भी संभव है।

यह, जैसा कि आपने कहा, स्वाद का मामला है।

हालांकि जब कोड पर काम करना मेरा नहीं है तो मैं कोशिश करूँगा कि परियोजना में जो भी कन्वेंशन का उपयोग किया जाता है उसका पालन करें।

इसका एक अच्छा तरीका मुझे इस पर नज़र रखना है (यह मानते हुए कि आप ग्रहण के साथ काम करते हैं) एक कोड स्वरूपण कॉन्फ़िगरेशन बनाते हैं और इसे परियोजना स्रोत के साथ निर्यात करते हैं और इसे स्रोत नियंत्रण के लिए प्रतिबद्ध करते हैं। इस तरह से परियोजना के लिए नवीनतम और सबसे बड़ा कोड कन्वेंशन सेटअप करने के लिए कुछ ही क्लिक दूर है और आपके द्वारा किए गए CTRL-SHIFT-F जुफ़र की एक हैबिट बनाने से बहुत सारे तर्क रोक दिए जाएंगे।

स्वचालित फ़ॉर्मेटरों का उपयोग करने का अतिरिक्त बोनस यह है कि आप जो भी सम्मेलन में काम करते हैं, वह आपको खुश कर सकता है और प्रतिबद्ध होने से पहले कोड को प्रारूपित कर सकता है। YMMV ने कहा कि कन्वेंशन और फॉर्मेटिंग टूल पर निर्भर करता है।

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