2017-01-05 37 views
5

यदि कोई वर्ग विधि कक्षा के राज्य पर निर्भर नहीं है तो यह स्थिर हो सकती है। क्या इस तरह के तरीकों को स्थैतिक बनाने के लिए यह अच्छा या बुरा अभ्यास है जहां यह मामला है?क्या स्टेटलेस विधियों को स्थिर बनाने के लिए यह अच्छा या बुरा अभ्यास है?

(के रूप में सी # टैग की गईं लेकिन शायद कई OO भाषाओं जहां तरीकों वर्ग के सदस्यों होना चाहिए करने के लिए लागू होता है।)

+0

पेजिंग @ जोन्स स्केट, निश्चित रूप से अपने तरह के प्रश्न की तरह दिखता है। –

उत्तर

4

दृश्य स्टूडियो कोड विश्लेषण और ReSharper उन तरीकों स्थिर बनाने के लिए, एक छोटे से प्रदर्शन लाभ है, क्योंकि सुझाव देते हैं:

MSDN से

:

सदस्य है कि उदाहरण के डेटा का उपयोग नहीं करते हैं या कॉल (विजुअल बेसिक में साझा) उदाहरण तरीके के रूप में स्थिर चिह्नित किया जा सकता। विधियों को स्थैतिक के रूप में चिह्नित करने के बाद, कंपाइलर इन सदस्यों को गैर-वर्चुअल कॉल साइट्स निकाल देगा। गैर-वर्चुअल कॉल साइट्स को उत्सर्जित करना प्रत्येक कॉल के लिए रनटाइम पर एक चेक को रोक देगा जो सुनिश्चित करता है कि वर्तमान ऑब्जेक्ट पॉइंटर गैर-शून्य है। यह प्रदर्शन-संवेदनशील कोड के लिए एक मापनीय प्रदर्शन लाभ प्राप्त कर सकता है। कुछ मामलों में, वर्तमान ऑब्जेक्ट इंस्टेंस तक पहुंचने में विफलता एक शुद्धता समस्या का प्रतिनिधित्व करती है।

गैर "प्रदर्शन-संवेदनशील" कोड के लिए यह स्वाद का विषय है। यदि मेरे पास ऐसा करने का कोई अच्छा कारण नहीं है तो मैं व्यक्तिगत रूप से रीशेर्पर के सुझावों का पालन करता हूं।

+0

मुझे पता नहीं था कि एमएसडीएन में ऐसे विवरण शामिल हैं, यह वास्तव में उपयोगी है –

+1

@ श्री बॉय यह वास्तव में एमएसडीएन नहीं है, लेकिन वीएस कोड विश्लेषण, एमएसडीएन केवल स्पष्टीकरण को कवर करता है क्यों सीए इसका सुझाव देता है। –

1

क्या ऐसी विधियां स्थिर करने के लिए यह अच्छी या बुरी आदत है जहां यह मामला है?

ईमानदारी से, यह कहने का कोई तरीका नहीं है कि 100% यह अच्छा या बुरा अभ्यास है या नहीं। कई लोग सामान्य नियमों का पालन करते हैं कि यदि इसे स्थैतिक बनाया जा सकता है तो ऐसा करें। यह दिखाता है कि राज्य पर कोई आवश्यकता नहीं है, और तकनीकी रूप से (कम से कम सी # में) यह थोड़ा तेज़ है।

कहा जा रहा है कि यह सभी विधियों के चारों ओर कोड की संरचना पर निर्भर करता है, और एप्लिकेशन कैसे विकसित होने जा रहा है।

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