Es hängt davon ab, ob. Es gibt wirklich zwei Arten von statischen Methoden:
- Methoden, die statisch sind, weil sie sein können
- Methoden, die statisch sind, weil sie sein müssen
In einer kleinen bis mittleren Codebasis können Sie die beiden Methoden wirklich austauschbar behandeln.
Wenn Sie eine Methode in der ersten Kategorie haben (kann statisch sein) und diese ändern müssen, um auf den Klassenstatus zuzugreifen, ist es relativ einfach herauszufinden, ob es möglich ist, die statische Methode in eine Instanzmethode umzuwandeln.
In einer großen Codebasis kann es jedoch aufgrund der schieren Anzahl von Anrufstellen schwierig sein, zu suchen, ob es möglich ist, eine statische Methode in eine nicht statische umzuwandeln. Oft sehen die Leute die Anzahl der Anrufe und sagen "ok ... ich ändere diese Methode besser nicht, sondern erstelle eine neue, die das tut, was ich brauche".
Das kann entweder zu Folgendem führen:
- Viel Code-Duplizierung
- Eine Explosion in der Anzahl der Methodenargumente
Beide Dinge sind schlecht.
Mein Rat wäre also, dass ich bei einer Codebasis über 200 KB LOC Methoden nur dann statisch machen würde, wenn es sich um statische Methoden handelt.
Das Refactoring von nicht statisch zu statisch ist relativ einfach (fügen Sie einfach ein Schlüsselwort hinzu). Wenn Sie also später aus einer statischen Dose eine tatsächliche statische machen möchten (wenn Sie die Funktionalität außerhalb einer Instanz benötigen), können Sie dies. Das inverse Refactoring, bei dem eine statische Dose in eine Instanzmethode umgewandelt wird, ist jedoch VIEL teurer.
Bei großen Codebasen ist es besser, Fehler auf der Seite der einfachen Erweiterung zu machen, als auf der Seite der idealogischen Reinheit.
Machen Sie also bei großen Projekten die Dinge nicht statisch, es sei denn, Sie brauchen sie. Machen Sie bei kleinen Projekten einfach das, was Ihnen am besten gefällt.