Wie gehe ich mit einer falsch benannten Funktion im Seriencode um?

28

Ich bin kürzlich auf eine Python-Bibliothek auf GitHub gestoßen. Die Bibliothek ist großartig, enthält jedoch einen eklatanten Tippfehler in einem Funktionsnamen. Nennen wir es so, wie dummy_fuction()es sein sollte dummy_function(). Diese Funktion ist definitiv "in the wild" und wird höchstwahrscheinlich in eingebetteten Systemen verwendet.

Das erste, was mir in den Sinn kommt, ist, eine zweite Version der Funktion mit dem richtigen Namen hinzuzufügen und der ersten Version für die nächste Version eine Verfallswarnung hinzuzufügen.

Drei Fragen:

  1. Könnte der obige Ansatz unbeabsichtigte Konsequenzen haben?
  2. Gibt es einen Standardansatz für diese Art von Problem?
  3. Wie lange sollte eine Verwerfungswarnung bestehen bleiben?
Jamie Bull
quelle
1
Dies ist eine (wenn auch nicht sehr häufige) Situation, in der eine statische Sprache viel robuster ist als eine dynamische: Ein Compiler könnte prüfen, ob Ihre umbenannte Funktion bereits vorhanden ist.
Giorgio
7
siehe auch HTTP - Referer [sic]
AakashM
2
Ich würde auch auf Apaches mod_speling hinweisen , aber das könnte beabsichtigt gewesen sein.
Setzen Sie Monica iamnotmaynard
1
@AakashM: Ich finde es toll, dass der Wikipedia-Artikel jetzt auf der gesamten Seite sowohl die falsche als auch die korrekte Schreibweise verwendet (auch wenn auf das Objekt Bezug genommen wird, nicht auf den Begriff), wobei die falsch geschriebene Version häufiger vorkommt!
Martijn Pieters
Ein weiteres gutes Stück über das http_referer- "Es ist, als ob ich das Referer-Feld gemacht habe. Ich habe nichts als Kummer um meine Wahl der Rechtschreibung. Ich versuche jetzt, die Rechtschreibung in der OED zu korrigieren, da meine Rechtschreibung mehrere Milliarden Mal pro Minute mehr verwendet wird als ihre. " - Phillip Hallam-Baker
Jamie Bull

Antworten:

29

In erster Linie hängt die Politik vom Betreuer ab.

Ich denke, Ihre Frage ist interessant, aber meistens meinungsbasiert.

Meiner persönlichen Meinung nach ist Ihr Ansatz solide - benennen Sie die Funktion um und lassen Sie die falsch geschriebene Version als veraltetes Artefakt und leiten Sie zur richtigen um.

Könnte der obige Ansatz unbeabsichtigte Konsequenzen haben?

Es könnte den Code brechen, z. wenn jemand die Rechtschreibfehler auch nicht ertragen und eine eigene umbenannte Version implementieren könnte. Jetzt kommt es zu einem Namenskonflikt, sobald die Bibliothek aktualisiert wurde.

Gibt es einen Standardansatz für diese Art von Problem?

Mach keine Rechtschreibfehler beim Schreiben einer Bibliothek;)

Wie lange sollte eine Verwerfungswarnung bestehen bleiben?

Ich bin der Meinung, dass die Verfallserklärung bis zur nächsten Hauptversion beibehalten werden sollte (wenn die erste Ziffer in der Versionsnummer erhöht wird).

Dies ist der Fall, wenn ein berechtigter Bruch der Abwärtskompatibilität tolerierbar ist und es den Bibliotheksbenutzern überlassen ist, sicherzustellen, dass ihr Code weiterhin einwandfrei erstellt wird.

Stellen Sie einfach sicher, dass Sie es im Changelog vermerken: Jungs, wenn Sie es benutzt haben dummy_fuction, ersetzen Sie es durchdummy_function überall, und Sie können loslegen.

Wenn die Bibliothek möglicherweise nicht versioniert ist, empfiehlt es sich, mit der Versionierung zu beginnen.

Konrad Morawski
quelle
1
Gut zu hören. Die Bibliothek ist versioniert, sodass der Ansatz zur Versionskontrolle gut klingt. Es hat tatsächlich eine eigene IDE, so dass die falsch geschriebene Version vor dem Code-Vervollständigungs-Tool verborgen werden kann, das neue Benutzer daran hindern sollte, sie zu verwenden. Wenn ich dir noch +1 für die Antwort auf Q2 geben könnte, würde ich!
Jamie Bull
2
Dies ist der Ansatz, den ich auch in anderen Programmen gesehen habe. Ich verwende eine Drittanbieter-API für eine Software, die ich entwickle, und ihre API enthält eine Getter-Methode, die einen Tippfehler enthält. Das Problem wurde behoben, indem die Methode umbenannt und eine Dummy-Methode mit der alten (falschen) Schreibweise erstellt wurde, die einfach die richtige Version aufruft. Die Dummy-Methode enthält keine andere Dokumentation als den Hinweis, dass sie veraltet ist, und einen Link zur richtigen Version. Diese Methode gibt es schon seit Jahren , um die Abwärtskompatibilität nicht zu beeinträchtigen.
Karl Nicoll