Wenn eine Klasse keinen Zustand hat, sollten alle Methoden statisch sein?

8

Sagen wir, ich habe eine Helper-Klasse wie mit ein paar Methoden

%Vor%

Was sind die Vor- / Nachteile, die Methoden in dieser Klasse statisch zu machen? Welches ist die bessere Praxis?

    
Koray Tugay 11.02.2014, 13:49
quelle

3 Antworten

9

Wenn Ihre Klasse nur Hilfsprogramme (wie Ihre) anbietet, glaube ich, dass es besser ist:

  • Machen Sie die Klasse final (es gibt keinen Grund sie zu erweitern)
  • Definieren Sie einen private -Konstruktor, um den Versuch zu vermeiden, eine Instanz der Klasse
  • zu erstellen
  • mache alle Methoden static .
Konstantin Yovkov 11.02.2014, 13:51
quelle
2

Wenn Sie sich dafür entscheiden, alle Methoden statisch zu machen, müssen Sie sich der Auswirkungen bewusst sein, die das auf Ihre Fähigkeit haben wird, andere Klassen zu testen, die davon abhängen.

Es schränkt Ihre Möglichkeiten zum Spotten stark ein (oder macht es zumindest schmerzhafter)

Ich glaube nicht, dass es eine richtige Antwort auf unsere Frage gibt - es hängt davon ab, was die Methoden tun. Zum Beispiel ist es einfach, sich ein staatenloses Datenzugriffsobjekt vorzustellen - wenn Sie alle seine Methoden statisch machen, dann bauen Sie eine Abhängigkeit von der Datenquelle in Ihrem Testzyklus auf oder machen Ihren spöttischen Code viel hässlicher

    
DaveH 11.02.2014 13:59
quelle
1

Machen Sie sie statisch, wenn sie keinen Status von einem Objekt verwenden. Die meisten davon sind Hilfsklassen wie Math. Ссылка

    
pL4Gu33 11.02.2014 13:52
quelle

Tags und Links