Archive

Posts Tagged ‘refactoring’

Me, Myself and ReSharper #5: Move to Resource

July 22nd, 2011 No comments

Neue Anforderung: die Applikation muss mehrsprachig sein. Kein Problem oder?

Natürlich nicht – ausser die Stunden monotoner Arbeit um all die Strings in Resource-Files zu verschieben. Moment – monoton, verschieben – das könnte was für meinen Freund ReSharper sein!

Also mal [CTRL]+[SHIFT]+R drücken und schauen was er mir da so anbietet:

Refactor This

Perfekt!

Hier lassen sich die einzelnen Werte abfüllen und mit Next werden diese dann in das ausgewählte Resource-File verschoben und der Code entsprechend angepasst.

Und es kommt noch besser! ReSharper kann auch noch den weiteren Code nach demselben Text durchsuchen und diesen Code dann ebenfalls entsprechend anpassen:

Me, Myself and ReSharper #4: Move method

September 7th, 2010 No comments

Immer wieder hört man sowas wie: “was, ich kann mit ReSharper nicht mal eine Methode verschieben”?

Die Antwort: Doch, kann er natürlich mit links, aber ganz ohne Köpfchen gehts dann doch nicht.

Das Problem…

… liegt eigentlich auf der Hand. Eine Klassenmethode hat in der Regel Abhängigkeiten zu Membern der Klasse in der sie sich befindet. Wie soll nun ReSharper mit diesen Abhängigkeiten umgehen? Zum Glück macht er das nicht irgendwie, sondern erwartet da etwas Vorarbeit vom Entwickler.

Die Lösung…

… liegt meist nahe, wenn man sich das Problem mal klar gemacht hat – so auch hier. Es gilt also, diese Abhängigkeiten aufzulösen – was bei statischen Methoden der Fall ist.

Als einfaches Beispiel nachfolgende Methode,  welche in die Klasse C verschoben werden soll:

public int Compute()
{
    int result = _b.Read();
    return result;
}

Hier gibt es eine Abhängigkeit auf _b. Um diese Abhängigkeit aufzulösen, übergibt man sie als Parameter an die Methode. Und da eilt ReSharper natürlich bereits mit einem Helferlein herbei:

resharper_introduceparameter

public int Compute(B b)
{
     int result = b.Read();
     return result;
}

Damit hat die Methode keine direkten Abhängigkeiten mehr zur Klasse, was es einem erlaubt, diese auch als statisch zu deklarieren.

resharper_makestatic

Die beiden Schritte könnte man in diesem Fall sogar in einem Rutsch tun. Der Dialog von “Make Static…” bietet eine Option, die Abhängigkeit _b als Parameter zu definieren:

resharper_makestatic2[6]

Je nach Komplexität der Methode, muss man jedoch doch auf die obere, zweistufige Methode zurückgreifen.

Und ist die Methode dann erstmal statisch, verweigert ReSharper auch die Move-Funktion nicht mehr:

resharper_movemethod

Sharing Buttons by Linksku