स्टेटिक विधियां बहुत तेज हैं और बहुत कम मेमोरी का उपयोग करती हैं। यह गलत धारणा है कि यह थोड़ा तेज़ है। जब तक आप इसे लूप पर नहीं डालते तब तक यह थोड़ा तेज़ होता है। बीटीडब्लू, कुछ लूप छोटे दिखते हैं लेकिन वास्तव में नहीं हैं क्योंकि लूप युक्त विधि कॉल भी एक और पाश है। आप उस कोड में अंतर बता सकते हैं जो प्रतिपादन कार्य करता है। कई मामलों में दुर्भाग्य से बहुत कम स्मृति है। एक उदाहरण बहन विधियों के साथ जानकारी के आसान साझा करने की अनुमति देता है। एक स्थिर विधि जानकारी के लिए पूछेगी जब उसे इसकी आवश्यकता होगी।
लेकिन ड्राइविंग कारों की तरह, गति जिम्मेदारी लाती है। स्टेटिक विधियों में आमतौर पर उनके उदाहरण समकक्ष की तुलना में अधिक पैरामीटर होते हैं। चूंकि एक उदाहरण साझा चर को कैशिंग का ख्याल रखता है, इसलिए आपके इंस्टेंस विधियां सुंदर दिखती हैं।
ShapeUtils.DrawCircle(stroke, pen, origin, radius);
ShapeUtils.DrawSquare(stroke, pen, x, y, width, length);
वी.एस.
ShapeUtils utils = new ShapeUtils(stroke,pen);
util.DrawCircle(origin,radius);
util.DrawSquare(x,y,width,length);
इस मामले में, जब भी उदाहरण चर सभी तरीकों समय के सबसे द्वारा उपयोग किया जाता है, उदाहरण के तरीकों यह बहुत लायक हैं। उदाहरण राज्य के बारे में नहीं हैं, यह साझा करने के बारे में है हालांकि आम राज्य साझा करने का एक प्राकृतिक रूप है, वे समान नहीं हैं। अंगूठे का सामान्य नियम यह है: यदि विधि कड़ाई से अन्य तरीकों से मिलती है --- वे एक दूसरे से इतना प्यार करते हैं कि जब उन्हें किसी को बुलाया जाता है, तो दूसरे को भी बुलाया जाना चाहिए और वे शायद उसी कप के पानी को साझा करते हैं-- -, यह उदाहरण बनाया जाना चाहिए। उदाहरण के तरीकों में स्थिर तरीकों का अनुवाद करने के लिए यह कठिन नहीं है। आपको केवल साझा पैरामीटर लेने और उन्हें आवृत्ति चर के रूप में रखने की आवश्यकता है। दूसरी तरफ कठिन है।
या आप प्रॉक्सी क्लास बना सकते हैं जो स्थैतिक तरीकों को पुल करेगा। हालांकि यह सिद्धांत में अधिक अक्षम हो सकता है, अभ्यास एक अलग कहानी बताता है। ऐसा इसलिए है क्योंकि जब भी आपको ड्रॉस्क्वेयर को एक बार (या लूप में) कॉल करने की आवश्यकता होती है, तो आप सीधे स्थिर विधि पर जाते हैं। लेकिन जब भी आप DrawCircle के साथ इसे और अधिक उपयोग करेंगे, तो आप इंस्टेंस प्रॉक्सी का उपयोग करेंगे। एक उदाहरण System.IO क्लासेस FileInfo (उदाहरण) बनाम फ़ाइल (स्थिर) है।
स्टेटिक तरीके टेस्ट करने योग्य हैं। वास्तव में, एक बार उदाहरण से भी अधिक परीक्षण योग्य। विधि GetSum (x, y) केवल इकाई परीक्षण के लिए बहुत परीक्षण योग्य नहीं होगा लेकिन परीक्षण, एकीकृत परीक्षण और उपयोग परीक्षण लोड करें। इंस्टेंस विधियां इकाइयों के परीक्षणों के लिए अच्छी हैं लेकिन हर दूसरे परीक्षणों के लिए भयानक है (जो बीटीडब्ल्यू परीक्षण इकाइयों से अधिक मायने रखती हैं) यही कारण है कि हमें इन दिनों इतनी सारी बग मिलती है। ऐसी चीज जो सभी विधियों को अस्थिर बनाती है वे पैरामीटर हैं जो समझ नहीं पाते हैं (प्रेषक, इवेंटआर्जे ई) या वैश्विक समय जैसे डेटटाइम.अब। वास्तव में, स्थैतिक तरीकों पर स्थैतिक विधियां इतनी अच्छी होती हैं कि आप अपने औसत ओओ प्रोग्रामर (वह मुझे पता है *** से भरा है) की तुलना में एक नए लिनक्स डिस्ट्रो के सी कोड में कम बग देखते हैं।
मुझे लगता है कि इस –