Ist Resharpers Empfehlung, meine private Methode statisch zu machen, eine gute Empfehlung?

8

Ich habe kürzlich bemerkt, dass, wenn ich private Methoden erstelle, die ein paar Felder in den Objekten setzen, die an sie übergeben werden, dass Resharper einen Hinweis anzeigt, dass die Methode statisch gemacht werden kann.

Hier ist ein stark vereinfachtes Beispiel für die Art der Methode, die ich haben könnte.

%Vor%

Wenn ich eine Methode wie diese habe, gibt Resharper eine Empfehlung, dass die Methode statisch gemacht werden kann.

Ich versuche zu vermeiden, dass öffentliche Methoden statisch werden, da sie bei Komponententests verheerende Schäden verursachen ... aber ich bin mir nicht sicher, ob das auch für private Methoden gilt.

Ist Resharpers Empfehlung eine gültige Best Practice oder sollte ich sie einfach abschalten?

    
mezoid 19.09.2009, 02:57
quelle

4 Antworten

11

Ich denke, das ist definitiv ein Hauptkandidat für eine statische Methode. Es ändert keine Eigenschaften, Felder usw. der Klasse.

Hier ist ein Beispiel:

%Vor%

Sie könnten es auch zu einer Erweiterungsmethode machen (die auch statisch wäre):

%Vor%     
scottm 19.09.2009, 03:03
quelle
8

Auf die Gefahr hin, wie ein Contrarian zu klingen, muss ich zugeben, dass ich statische Methoden nicht gerne mit Instanzmethoden vermische; und ich mag statische Methoden im Allgemeinen nicht. Statische Methoden sind schwer zu testen, schwer zu überschreiben und schwer zu warten. Ich bevorzuge es, alle statischen Methoden für den Umgang mit Foo-Objekten in einer einzigen FooUtils-Klasse zu verankern - oder noch besser in einer Singleton-Instanz einer FooSomethingDoer-Klasse.

Natürlich machen statische Methoden in einigen Fällen durchaus Sinn - zum Beispiel, wenn ich die oben erwähnten Singletons oder Fabriken usw. erstelle. Ich sage nicht, dass alle statischen Methoden aus reinem Bösen bestehen; Ich bevorzuge es, auf der Seite zu bleiben, wenn es möglich ist, sie zu meiden.

    
Bugmaster 19.09.2009 03:58
quelle
7

Ich denke schon; zu sehen, dass eine Methode statisch ist, ist ein klarer Hinweis darauf, dass die Methode nicht mit Instanzmitgliedern interagieren soll.

Stellen Sie sich vor, Sie würden eine nicht-statische Methode debuggen und realisieren, dass die Instanz nicht berührt wird. Sofortiger Geruch, und wenn es keinen Kommentar gibt, der erklärt, was die Funktion tut, könnten Sie vom wirklichen Problem abgelenkt werden.

    
overslacked 19.09.2009 03:04
quelle
4

Ich gehe normalerweise mit der Empfehlung von R #. Es ist eine private Methode, also schreiben Sie (hoffentlich) keine Komponententests dagegen. Wenn Sie es statisch machen, wird explizit angegeben, dass es keine Instanzenmitglieder verwendet, was die Überprüfung auf Nebenwirkungen erleichtert.

    
TrueWill 19.09.2009 03:05
quelle

Tags und Links