Visual Refactoring Studio: eliminați metoda

Există un add-in pentru Visual Studio care poate face refactorizarea metodei de eliminare? Să presupunem că aveți următoarea metodă:

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

Sau varianta în care rezultatul este nul.

Scopul refactorizării este înlocuirea tuturor apelurilor la DoSomething cu apelurile către ComputeResult sau expresia care folosește parametrii dacă ComputeResult nu este un apel de metodă.

0
fr hi bn

6 răspunsuri

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.

În ceea ce privește metoda eliminării, există o descriere în cartea canonică Refactoring despre cum să procedăm în mod incremental.

Personal, urmăresc un model în acest sens (presupuneți că testele de compilare și de rulare au loc între fiecare pas):

  1. Creați noua metodă
  2. Eliminați carcasa metodei vechi, modificați-o pentru a apela noua metodă
  3. Căutați toate referințele la metoda veche (faceți clic dreapta pe numele metodei și selectați "Find all Reference"), modificați-le la apelurile la noua metodă
  4. Marcați metoda veche ca fiind [învechită] (apelurile către aceasta vor apărea acum ca avertismente în timpul construcției)
  5. Ștergeți metoda veche
0
adăugat

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.

Cu toate acestea, poate se poate face un pas . Dacă am citit corect.

0
adăugat

De asemenea, puteți să faceți clic dreapta pe numele metodei și să faceți clic pe "Găsiți toate referințele" din Visual Studio.

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

0
adăugat

Când vine vorba de refactorizări, încercați ReSharper .

Faceți clic dreapta pe numele metodei, faceți clic pe "Căutare utilizări" și pe refactor până când nu găsiți nicio referință.

Și, așa cum am menționat dlamblin, cea mai nouă versiune a ReSharper are posibilitatea de a introduce o metodă. Ar trebui să faceți exact ceea ce aveți nevoie.

0
adăugat

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

0
adăugat
Este posibil sa faci asta fara ReSharper?
adăugat autor Sasha, sursa

Aș face acest lucru cel mai simplu mod:

  1. redenumiți metoda ComputeResult la ComputeResultX
  2. redenumiți metoda DoSomething la ComputeResult
  3. elimina metoda DoSomething (care este acum ComputeResult)
  4. redenumiți metoda ComputeResultX înapoi la ComputeResult

Poate VS va arăta un conflict din cauza ultimei renumări, dar o ignoră.

Prin "redenumire" vreau să spun: suprascrieți numele metodei și după ce utilizați meniul drop-down (Shift + Alt + F10) și selectați "redenumiți". Acesta va înlocui toate aparițiile cu noul nume.

0
adăugat