विजुअल स्टूडियो रीफैक्टरिंग: विधि निकालें

क्या कोई विजुअल स्टूडियो ऐड-इन है जो निकालने की विधि रीफैक्टरिंग कर सकता है?
मान लें कि आपके पास निम्न विधि है:

Result DoSomething(parameters)  
{  
    return ComputeResult(parameters);  
}  

या वेरिएंट जहां परिणाम शून्य है।

रिफैक्टरिंग का उद्देश्य सभी कॉल को ComputeResult पर कॉल के साथ DoSomething को प्रतिस्थापित करना है या अभिव्यक्ति जो पैरामीटर का उपयोग करती है यदि ComputeResult एक विधि कॉल नहीं है।

0
ro fr bn

6 उत्तर

There are a few products available to add extra refactoring options to Visual Studio 2005 & 2008, a few of the better ones are Refactor! Pro and Resharper.

जहां तक ​​विधि को हटाया गया है, कैनोनिकल रिफैक्टरिंग पुस्तक में यह विवरण है कि यह कैसे बढ़ता है।

व्यक्तिगत रूप से, मैं इन पंक्तियों के साथ कुछ पैटर्न का पालन करता हूं (मान लें कि प्रत्येक चरण के बीच इकाई परीक्षणों को संकलित करना और चलाना):

  1. नई विधि बनाएं
  2. पुरानी विधि के निकाय को निकालें, इसे नई विधि कॉल करने के लिए बदलें
  3. पुरानी विधि के सभी संदर्भों के लिए खोजें (विधि नाम पर राइट क्लिक करें और "सभी संदर्भ खोजें" का चयन करें), उन्हें नई विधि में कॉल करने के लिए बदलें
  4. पुरानी विधि को [अप्रचलित] के रूप में चिह्नित करें (इसे कॉल करने के दौरान अब चेतावनियों के रूप में दिखाई देगा)
  5. पुरानी विधि हटाएं
0
जोड़ा

ReSharper is definitely the VS 2008 plug in to have for refactoring. However it does not do this form of refactoring in one step; you will have to Refactor->rename DoSomething to ComputeResult and ignore the conflict with the real ComputeResult. Then delete the definition which was DoSomething. It's almost one step.

हालांकि हो सकता है कि यह इसे एक चरण कर सकता है। अगर मैं इसे सही ढंग से पढ़ता हूं।

0
जोड़ा

आप विधि नाम पर राइट क्लिक भी कर सकते हैं और विजुअल स्टूडियो में "सभी संदर्भ ढूंढें" पर क्लिक कर सकते हैं।

I personally would just do a CTRL + SHIFT + H to Find & Replace

0
जोड़ा

जब ऐसा रीफैक्टरिंग की बात आती है, तो ReSharper आज़माएं।

बस विधि नाम पर राइट क्लिक करें, "उपयोग करें" पर क्लिक करें, और रिफैक्टर जब तक कि कोई संदर्भ न मिल जाए।

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

0
जोड़ा

If I understand the question, then Resharper calls this 'inline method' - Ctrl - R + I

0
जोड़ा
क्या रीशेर्पर के बिना ऐसा करना संभव है?
जोड़ा लेखक Sasha, स्रोत

मैं इसे सबसे आसान तरीका करूँगा:

  1. ComputeResultX
  2. पर ComputeResult विधि का नाम बदलें
  3. ComputeResult
  4. करने के लिए कुछ और विधि का नाम बदलें
  5. DoSomething विधि को हटाएं (जो अब ComputeResult है)
  6. ComputeResultX विधि को ComputeResult
  7. पर वापस बदलें

शायद वीएस अंतिम नाम के कारण कुछ संघर्ष दिखाएगा, लेकिन इसे अनदेखा करें।

"नाम बदलें" का अर्थ है: विधि के नाम को ओवरराइट करें और इसके बाद ड्रॉपडाउन (Shift + Alt + F10) का उपयोग करें और "नाम बदलें" का चयन करें। यह सभी अवसरों को नए नाम से बदल देगा।

0
जोड़ा