it-swarm.com.de

Behebung eines Rechtschreibfehlers in einem Methodennamen

Eine der Methoden, die ich üblicherweise in unserer Codebasis verwende, ist falsch geschrieben (und sie war älter als ich).

Das irritiert mich wirklich nicht nur, weil es falsch geschrieben ist, sondern was noch wichtiger ist, dass ich den Namen beim ersten Tippen IMMER falsch verstehe (und dann muss ich mich daran erinnern, dass "Oh, richtig, es sollte falsch geschrieben sein ...").

Ich nehme einige Änderungen an der ursprünglichen Methode vor. Sollte ich die Gelegenheit nutzen, um die Freaking-Methode einfach umzubenennen?

73
One Two Three

Sollte ich die Gelegenheit nutzen, um die Freaking-Methode einfach umzubenennen?

Absolut.

Wenn Ihr Code jedoch als API veröffentlicht wurde, sollten Sie im Allgemeinen auch die falsch geschriebene Methode belassen und an die korrekt benannte Methode weiterleiten (als veraltet markieren, wenn Ihre Sprache solche Dinge unterstützt).

136
Telastyn

Es gibt Fälle, in denen Sie solche Refactorings vermeiden sollten:

  1. Wenn die Methode in einer öffentlichen Schnittstelle verwendet wird. Ein kanonisches Beispiel ist die Rechtschreibfehler von referrer in HTTP-Verweis , wobei die falsche Schreibweise beibehalten wird, da eine Änderung der Schreibweise jetzt zu viele Auswirkungen hätte.

  2. Wenn die Codebasis nicht durch Tests abgedeckt ist. Beliebig Refactoring sollte für getesteten Code durchgeführt werden, um zu sein Regressionstests durchführen können. Das Refactoring der Codebasis, die nicht getestet wird, ist besonders riskant. Wenn Sie viel Zeit haben, fügen Sie zunächst Tests hinzu. Wenn Sie unter Zeitdruck arbeiten, ist es nicht das Beste, das Risiko einzugehen, subtile Fehler einzuführen, wenn Sie pünktlich versenden möchten.

  3. Wenn die Methode auf ungewöhnliche Weise verwendet werden könnte , was es praktisch unmöglich macht, ihre Verwendung zu finden (über Strg + F oder ein automatisiertes Refactoring-Tool). In C # kann beispielsweise eine Methode über Reflection aufgerufen werden, wodurch das Dialogfeld "Umbenennen" von Visual Studio unwirksam wird. In JavaScript ist die in eval() aufgerufene Funktion ebenfalls schwer zu finden. In PHP können variable Variablen Probleme verursachen.

  4. Wenn die Größe des Projekts sehr groß ist und die Methode von anderen Teams verwendet werden könnte. Dies ähnelt dem ersten Punkt, d. H. Die Schnittstelle, die Sie anderen Teams zur Verfügung stellen, kann als öffentliche Schnittstelle betrachtet werden.

  5. Wenn Sie sich mit einem lebenskritischen Projekt befassen. Möglicherweise ist die Rechtschreibfehler nicht zu wichtig, um einige Monate Papierkram zu rechtfertigen, um den Namen zu ändern der Methode und stellen Sie sicher, dass kein Patient die zehnfache autorisierte Strahlung oder ein Shuttle erhält, um seine Geschwindigkeit falsch zu berechnen.

In jeder anderen Situation können Sie die Methode umbenennen.

52

Ich habe das vor ein paar Monaten gemacht (aus verschiedenen Gründen). Die Schritte, die ich unternommen habe (die Sprache war Perl):

  1. Benennen Sie die Methode um. Alias ​​den alten Namen mit dem neuen Namen (dies sollte keinen Code beschädigen, da die Methode mit beiden Namen aufgerufen werden kann).
  2. Informieren Sie den Rest der Entwickler über die Namensänderung und warum und sagen Sie ihnen, dass sie von nun an den neuen Namen verwenden sollen.
  3. Suchen Sie in der Codebasis nach dem alten Namen und beheben Sie alle Vorkommen.
  4. Protokollieren Sie alle Verwendungen des alten Namens (die Verwendung des alten Namens sollte zu diesem Zeitpunkt noch funktionieren). Beheben Sie diese Fälle.
  5. Warten Sie (während Sie 4. ausführen), bis keine weiteren Einträge im Protokoll angezeigt werden.
  6. Brechen Sie den Alias. Erstellen Sie eine Methode unter Verwendung des alten Namens, die eine schwerwiegende Ausnahme mit einer Meldung über die Namensänderung auslöst.
  7. Entfernen Sie nach einiger Zeit die Methode mit dem alten Namen.

    Natürlich wird Ihr Kilometerstand variieren.

30
Abigail

Ein guter Weg, um keinen vorhandenen Code zu beschädigen, besteht darin, den neuen Methodennamen mit dem alten in einem solchen zu verketten

private void MyNewMethodName()
{
    TheOldMethodName();
}

und markieren Sie dann die alte Methode als veraltet (wenn Ihre Sprache dies unterstützt). Auf diese Weise funktioniert jeder vorhandene Code weiterhin und Sie können nach und nach alle alten Rechtschreibfehler aus Ihrer Codebasis entfernen. Schließlich können Sie sogar den Methodenkörper in die neue Methode kopieren/einfügen und den alten löschen.

/ Bearbeiten Wie ivo im Kommentar sagte: Noch besser wäre es, den Code von TheOldMethodName in MyNewMethodName zu verschieben und die neue Methode von der alten aufzurufen. Dieser hätte auch den Vorteil, dem Entwickler zu helfen, sich dort zurechtzufinden, wo der Code hingehört.

6
Rémi

Umbenennen der Methode:

  • Tun Sie dies durch Refactoring, damit Sie nicht mehr Arbeit zu erledigen haben, als Sie möchten
  • Wenn Ihr IDE die automatische Vervollständigung unterstützt, verwenden Sie es, wenn Sie auf diese Methode verweisen

Das sind zwei Möglichkeiten, für die Sie sich entscheiden könnten. Ich würde die automatische Vervollständigung (z. B. Eclipse IDE) bevorzugen und muss den Methodennamen nicht eingeben. Die Umbenennung anstreben; Stellen Sie einfach sicher, dass Sie herausfinden, was diese Methode aufruft, und ändern Sie die direkten Referenzen an jeder Stelle. Refactoring wird Ihr Freund dafür sein, aber seien Sie dabei äußerst vorsichtig.

1
Mushy

Ich würde generell ja empfehlen, es umzubenennen.

Andere Antworten hier haben gute Gründe aufgeführt, warum Sie es möglicherweise nicht umbenennen möchten. Wenn Sie sich also in einer solchen Situation befinden, können Sie eine neue Methode mit dem richtigen Namen und der richtigen Implementierung erstellen und die alte Methode in ändern rufe die neue Methode auf. Markieren Sie dann die alte als veraltet, wenn Ihre Sprache dies unterstützt.

0
Brian