मैंने यहां कुछ खोज किया है और इस तरह कुछ भी नहीं मिला है, इसलिए मैं आगे बढ़ने जा रहा हूं और पूछूंगा। यह वास्तविक प्रोग्रामिंग प्रश्न की तुलना में अर्थशास्त्र के बारे में वास्तव में अधिक है। मैं वर्तमान में सी ++ में कुछ लिख रहा हूं लेकिन भाषा वास्तव में कोई फर्क नहीं पड़ता।फ़ंक्शन कितना छोटा होना चाहिए?
मुझे अच्छी तरह से पता है कि यह आपके कार्यों/विधियों को यथासंभव छोटा रखने के लिए अच्छा प्रोग्रामिंग अभ्यास है। फिर भी आप वास्तव में कैसे जानते हैं कि कोई फ़ंक्शन बहुत लंबा है या नहीं? वैकल्पिक रूप से, क्या कभी भी कार्यों को तोड़ना कभी संभव है?
पहली प्रोग्रामिंग भाषा जो मैंने सीखा (एप्पलॉफ्ट बेसिक के अलावा, जो गिनती नहीं है ...) 6502 असेंबली भाषा थी, जहां गति और अनुकूलन सब कुछ है। ऐसे मामलों में जहां कुछ चक्र गणना आपके पूरे कार्यक्रम के समय को खराब कर देती हैं, अक्सर स्मृति स्थान सेट करना या किसी अन्य सबराउटिन पर कूदने के बजाय सीधे पंजीकरण करना बेहतर होता है। पूर्व ऑपरेशन में 3 या 4 चक्र लग सकते हैं, जबकि पूरी तरह से बाद वाले को दो या तीन बार लग सकते हैं।
जबकि मुझे एहसास हुआ कि आजकल अगर मुझे कुछ प्रोग्रामर को चक्र गणना का उल्लेख करना था तो वे मुझे एक खाली रूप दे देंगे, यह तोड़ने की एक कठिन आदत है।
विशेष रूप से, मान लीजिए कि (फिर से सी ++ का उपयोग करते हुए) हम एक निजी वर्ग विधि ऐसा ही कुछ है डालते हैं निम्नलिखित:
int Foo::do_stuff(int x) {
this->x = x;
// various other operations on x
this->y = this->x;
}
मैं कुछ तर्क देखा है कि, कम से कम, आपरेशन के प्रत्येक सेट करना चाहिए अपना स्वयं का कार्य हो। उदाहरण के लिए, do_stuff() सिद्धांत को set_x (int x) में नामित किया जाना चाहिए, कक्षा सदस्य x पर किए गए संचालन के सेट के लिए एक अलग फ़ंक्शन लिखा जाना चाहिए, और तीसरे फ़ंक्शन को वर्ग सदस्य के अंतिम मान को असाइन करने के लिए लिखा जाना चाहिए एक्स से वर्ग सदस्य वाई। लेकिन मैंने अन्य तर्क देखा है कि प्रत्येक ऑपरेशन का अपना कार्य होना चाहिए।
मेरे लिए, यह गलत लगता है। फिर, मैं एक आंतरिक परिप्रेक्ष्य से चीजों को देख रहा हूँ; प्रत्येक विधि कॉल स्टैक पर एक पता दबा रहा है, इसके संचालन कर रहा है, फिर subroutine से लौट रहा है। यह अपेक्षाकृत सरल कुछ के लिए बहुत अधिक ओवरहेड की तरह लगता है।
क्या इस तरह की चीज़ के लिए सबसे अच्छा अभ्यास है या क्या यह व्यक्तिगत निर्णय के लिए अधिक है?
धन्यवाद, यह निश्चित रूप से सहायक है। सी ++ मेरी पहली गैर-असेंबली भाषा का मतलब नहीं है, लेकिन चूंकि मैंने कभी भी किसी भी चीज में औपचारिक प्रशिक्षण नहीं लिया है, इसलिए मैंने सोचा कि कोडिंग प्रथाओं पर कुछ प्रतिक्रिया प्राप्त करना सर्वोत्तम है। – xobicvap
+1 यह कहने के लिए कि चक्र होने की चिंता न करें जब तक कि यह कोई समस्या न हो। सभी बुराईयो की जड़ समयपूर्व इष्टतमीकरण है। – riwalk