1.4b
— Functions क्यूँ उपयोगी
हैं और उनका सबसे बेहतर प्रयोग कैसे किया जाये
हम जान चुके हैं की functions क्या हैं, तो चलिए अब देखें
की function programming में क्यों ज़रूरी
हैं ।
Functions
का इस्तेमाल क्यूँ?
नए programmers अकसर ये पूछते हैं
की , “क्या किसी function में लिखा गया code सीधे main में नहीं लिखा जा
सकता?” कुछ परिस्थितियों में (विशेषकर छोटे examples के लिए) code को केवल main function में लिखना सही है । लेकिन बड़े programs में, functions का इस्तेमाल programmer
को बहुत सारी सुविधाएँ देता है ।
- Codes
को व्यवस्थित रखना -- जैसे-जैसे program जटिल (complex) होता जाता है, सारे codes को main
में व्यवस्थित रखना काफी मुश्किल हो जाता है
। Function
बिलकूल एक छोटे program की तरह है जिसे main function से बिलकुल अलग लिखा जा सकता है, program के बाकी हिस्सों की परवाह किये बिना । ये हमारे मुश्किल कामो को
आसान और छोटे-छोटे भागों में बाँट देता है जिससे program की जटिलता काफी हद तक कम हो जाती है ।
- फिर से इस्तेमाल किये जाने
लायक code
प्रदान करना -- एक बार यदि कोई function लिखा जा चूका है तो कोई भी function इसे अपने इस्तेमाल के लिए जितनी बार चाहे, call कर सकता है । Functions program में copy/paste
errors से बचाते है, और साथ ही एक ही code को कई जगह लिखे जाने की समस्या से भी छुटकारा दिलाते है (duplicate code) । Functions
लिखे जाने के बाद दुसरे programs में भी इस्तेमाल किये जा सकते हैं । ये आपका काफी सारा समय बचाता है
क्यूंकि यदि आपने पहले से ही function लिख लिया है तो आपको सारा काम शुरुआत से करने की कोई ज़रूरत नहीं ।
- Code
को Test करने में आसान बनाना -- क्यूंकि functions एक ही code को बेकार में बार-बार लिखने के झंझट से छुटकारा दिलाते हैं, जब codes
को test करने की बारी आएगी, तो test
करने के लिए program में केवल ज़रूरत भर code रहेगा । Functions में लिखे गए code, program के बाकी हिस्सों में कभी निर्भर नहीं होते । इसलिए यदि function के भीतर का code एक बार test कर लिया गया हो, इसे वापस तब तक test करने की ज़रूरत नहीं पड़ती जब तक हम function में कोई बदलाव ना करें । ये उन codes की संख्या में कमी लाता है, जिन्हें test की ज़रूरत है ।
- Program
का विस्तार करने में सहायक -- जब हम अपने program का विस्तार करने के लिए इसके functions से कुछ ऐसे cases हैंडल करने की कोशिश करते हैं, जिसके लिए अब तक program का वो function नहीं लिखा गया था, तो यहाँ फिर से functions हमारी काफी सहायता करते हैं । वो इसलिए क्यूंकि functions को केवल एक ही जगह बदलने की ज़रूरत पड़ेगी और जब भी इस function को call
किया जायेगा, code में किया गया बदलाव हर बार दिखाई देगा ।
- Abstraction --
Abstraction का अर्थ है किसी चीज़ के
बारे बहुत अधिक जाने बगैर उसका इस्तेमाल अलग-अलग जगहों पर करना । किसी function का इस्तेमाल करने के लिए हमें केवल इसका नाम, इसे दिया जाने वाला input, इसका output और ये कहाँ स्थित है, इतना ही जानने की ज़रूरत है । हमे इसके काम करने के तरीके, और ये किन दुसरे codes पर निर्भर करता है, ये जानने की बिलकुल भी ज़रूरत नहीं है । ये किसी दुसरे के द्वारा
लिखे गए codes
को अपने program में पाने के लिए काफी उपयोगी है । उदाहरण के लिए, हमारे programs में standard
library का इस्तेमाल करने के लिए
ये जानना ज़रूरी नहीं की आखिर ये (standard library) काम कैसे करता है ।
भले ही ऐसा लगता ना हो, पर जब भी हम std::cin या std::cout का प्रयोग input या output के लिए करते हैं, हम असल में standard library में define किये गए कुछ functions
का ही इस्तेमाल कर रहे होते है ।
प्रभावी ढंग से functions का इस्तेमाल करना
C++ सीखते वक़्त नए programmers के लिए सबसे बड़ी चुनौती यही होती है की function का इस्तेमाल किस तरह से और कहाँ किया जाए । नीचे functions
लिखे जाने की ज़रूरत कब पड़ेगी, इसके विषय में कुछ निर्देश दिए गए हैं:
- यदि program में कोई code एक से ज्यादा बार इस्तेमाल होने वाला है, तो इस code को बिलकुल अलग एक function में लिखा जाना चाहिए । उदाहरण के लिए, यदि हमे एक से ज्यादा बार user से एक ही तरह का input चाहिए, तो यहाँ input लेने के लिए एक function लिखना सबसे अच्छा उपाय है । इसी प्रकार, यदि हमे एक ही तरह का output बार-बार देना है, हमे इसके लिए एक अलग function लिख लेना चाहिए ।
- Code
जिनमे inputs और outputs
हर बार एक से नहीं होते, पर उनपर हमेसा एक ही तरह का काम किया जाता है, यहाँ functions काफी उपयोगी साबित हो सकते हैं । उदाहरण के लिए, यदि हमारे पास data का एक list है जिसे किसी क्रम में सजाना है, तो data
को किसी क्रम में सजाने के लिए एक function लिखा जाना एक बहुत ही अच्छा उपाय है । यदि sorting (क्रम में सजाने) का काम केवल एक बार किया जाना है, तो भी । यहाँ पे unsorted list हमारा input है,
और इस list को sort
करने पर जो result मिलेगा, वो हमारे function का output
होगा ।
- Function
केवल एक (और एक ही) task को पूरा करने के लिए लिखा जाना चाहिए ।
- जब कोई function काफी बड़ा, जटिल या समझने में मुश्किल बना जाता है, तो इसे छोटे-छोटे sub-functions में तोड़ देना चाहिए । ये प्रक्रिया refactoring कहलाती है
आम तौर पर, C++ सीखते हुए आप ऐसे कई programs लिखोगे, जो नीचे दिए गए तीन
tasks को ज़रूर पूरा
करेंगी:
- User
से input लेना या read करना
- दिए गए input के आधार पर एक value calculate करना
- Calculated
value को print करना
छोटे programs के लिए (e.g.
programs जिनमे 20 से भी कम lines हो), ये सारे काम main() में किये जा सकते हैं । लेकिन बड़े programs में (या practice के लिए) इनमे से हर एक को करने के लिए एक function लिखना एक अच्छा उपाय है ।
नए programmers अकसर #2 और #3 में दिए गए कामों को एक ही function में निपटाने की कोशिश करते हैं । ये functions
के “एक function, एक task” के नियम का उल्लंघन है । Function जो value calculate करने के लिए
ज़िम्मेदार है, उसे केवल value को calculate कर caller को return करने तक ही सीमित
रखना चाहिए और ये पूरी तरह से caller पर छोड़ देना चाहिए की calculated value का क्या करना है ।

No comments:
Post a Comment