2012-01-30 18 views
5

विभिन्न एंड्रॉइड एप्लिकेशन (मेरे द्वारा लिखे गए नहीं) के लिए स्रोत कोड देखने से, मैंने कोड के कुछ टुकड़ों को अपने तरीके से रखने का एक पैटर्न देखा, हालांकि वास्तव में कोई कोड पुन: उपयोग नहीं है, क्योंकि उन तरीकों को केवल एक बार बुलाया जाता है पूरा आवेदन।कोड का हिस्सा जिसे केवल एक बार कहा जाता है - योग्यता का तरीका है?

अब तक मेरे पास अंगूठे का नियम था जो निर्देश देता है कि यदि कोड कोड में दो बार या अधिक कोड कोड का उपयोग किया जाता है, तो यह कोड की अनावश्यकता को समाप्त करने के कारण ही अपनी विधि का अनुकूलन करता है।

लेकिन कोड के उन व्यवस्थित रूप से टूटे हुए हिस्सों को अपने तरीके से (और अपनी विधि कॉलिंग ओवरहेड) में देखकर, मैं शुरू कर रहा हूं कि शायद मुझे कुछ याद आ रहा है।

दस्तावेज़ीकरण उद्देश्यों के अलावा, अन्य कारणों से कोड की केवल 4 पंक्तियां (जिन्हें केवल एक बार कहा जाता है!) डालने का औचित्य सिद्ध हो सकता है?

+1

पठनीयता? स्व-दस्तावेज कोड? "विधि कॉलिंग ओवरहेड" को जावा में बहुत अधिक अनदेखा किया जा सकता है क्योंकि यह एक बड़ा सौदा नहीं है। – Marcelo

उत्तर

5

, कुछ कारणों से मैं के बारे में सोच सकते हैं बेशक वहाँ हालांकि कुछ ओवरलैप:

  • यह अपने कोड स्वयं कुछ दस्तावेज़ीकृत बनाने में मदद करता।
  • यह (इकाई) परीक्षण को आसान बनाता है।
  • यह आपको उन विधियों के साथ समाप्त होने में मदद करता है जो सैकड़ों लाइनें लंबी हैं।
  • आप भविष्य में कहीं और उस कोड का उपयोग करना चाह सकते हैं।

बेशक, यह सब इस धारणा पर निर्भर करता है कि कोड की उन 4 पंक्तियां संबंधित हैं, और एक ही कार्य कर रही हैं। मुझे लगता है कि अंगूठे का एक अच्छा नियम है: यदि आप इसके लिए कोई नाम नहीं सोच सकते हैं, तो शायद यह एक विधि नहीं होनी चाहिए।

+4

+1। मैं इसे हाइलाइट करने जा रहा हूं: 'यदि आप इसके लिए कोई नाम नहीं सोच सकते हैं, तो शायद यह एक विधि नहीं होनी चाहिए।' – an00b

2

Compose Method रिफैक्टरिंग के लिए दिए गए औचित्य देखें।

4

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

8

तीन कारणों से शुरू करने के लिए के साथ:

  • आप कुछ और से अलग होने में यह परीक्षण कर सकते हैं। (यह केवल सार्वजनिक एपीआई का परीक्षण करने के मंत्र के खिलाफ जा सकता है, लेकिन यह मेरे द्वारा ठीक है। अगर मुझे इसका परीक्षण करने के लिए निजी के बजाय विधि पैकेज स्तर बनाना है, तो मुझे परेशान करना है, लेकिन मैं इसके बजाय ऐसा करना चाहता हूं एक बार में तर्क के एक विशाल ढेर का परीक्षण करना होगा।)
  • आप सरल तरीकों से एक और जटिल विधि बना सकते हैं, जहां संपूर्ण जटिल विधि विवरण निर्दिष्ट किए बिना एक एकल अमूर्त स्तर पर है। उच्च स्तरीय विधि को पढ़ना मतलब है कि इसे बनाने वाले बिल्डिंग ब्लॉक के नाम पढ़ना; इसके बाद आप में केवल में रुचि ले सकते हैं, यदि आपको रुचि रखने वाले विवरण हैं।
  • आप तरीकों जो प्रत्येक एक बात अच्छी तरह से करते हैं, और नाम लिख सकते हैं और उन्हें एक स्पष्ट तरीका

बेशक इस overdone जा सकता है में दस्तावेज़, लेकिन यह निश्चित रूप से उपयोगी हो सकता है।

3

यह उम्मीद है कि क्लीनर कोड की सुविधा होगी, और परीक्षण करना आसान होना चाहिए।

आप विधि-कॉलिंग ओवरहेड का जिक्र करते हैं, लेकिन अगर विधि को केवल एक बार बुलाया जाता है तो इससे कोई चिंता नहीं होनी चाहिए।

+0

क्षमा करें, "केवल एक बार बुलाया" से मेरा मतलब केवल एक ही स्थान से कहा जाता है। उदाहरण के लिए, उस कोड को लूप में कई बार बुलाया जा सकता है। – an00b

+0

ओवरहेड अभी भी नगण्य होना चाहिए, क्योंकि संकलक उस मामले में कुछ जेआईटी अनुकूलन कर सकता है। अंगूठे के नियम के लिए –

1

पठनीयता इस तरह के कोडिंग व्यवहार के लिए मेरा बड़ा कारण है।

यदि मैं एक लंबी कोड सूची में देख रहा हूं, एक विशिष्ट प्रक्रिया या कोड के एक अनुभाग की तलाश में हूं, तो यह तुरंत स्पष्ट नहीं हो सकता है कि उस विशिष्ट प्रक्रिया या कोड का अनुभाग है।

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

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

कम से कम, यह मेरी व्याख्या है।

0

जावा वीएम की सामान्य रूप से विधि के अधिकतम आकार पर एक सीमा है जो इनलाइनिंग के लिए योग्य होगी। अकसर बुलाए जाने वाले कोड को निकालने के लिए पहियों को ग्रीस कर सकते हैं। क्या आप उदाहरण बता सकते हैं?

संबंधित मुद्दे