Ich dachte, ich ziemlich am Semantic Versioning clued, aber diese eine Änderung hat mich unsicher gemacht, was Änderung der erwartete Version ist:Semver auf verschachteltes Objekt in JavaScript, Major, Minor oder Patch?
Der ursprüngliche Code:
if (result.error) {
return callback(result.error);
}
Der neue Code:
if (result.error) {
result.error.message = `${result.error.message} on ${self.tableName()}`;
return callback(result.error);
}
Ich denke, diese Änderung könnte als patch
, minor
oder als major
Änderung eingestuft werden. Die drei Szenarien:
patch
: der Rückruf noch einError
Objekt empfängt. DasError
Objekt hat immer noch einemessage
Eigenschaft und diese Eigenschaft ist immer noch eineString
.minor
: Ein Konsument kann sich auf den Inhalt dermessage
-Eigenschaft verlassen und nach einem Teil der Zeichenfolge suchen. Diese Änderung fügt nur mehr am Ende der Zeichenfolge hinzu, ist also nur additiv.major
: ein Verbraucher kann auf dem Inhalt dermessage
Eigenschaft angewiesen sein, und das ist jetzt eine andere Zeichenfolge
ich wirklich wütend einmal bekam, wenn eine Bibliothek war ich mit entsprachen nicht in der Art und Weise semver Ich habe erwartet. Ich möchte das nicht jemand anderem antun.
Ich bin mir bewusst, dass dies als eine subjektive/meinungsbasierte Frage angesehen werden könnte, aber ich suche nach der "richtigen" Antwort (mit Beweisen, wenn möglich). Die sicherste Option ist natürlich, gehen Sie für major
, aber ich freue mich, ob das Overkill ist.
Da Sie nicht wissen können, wie Ihre Benutzer die Nachricht verwenden, ist dies eine bahnbrechende Änderung. –
@AdrianLynch dann * jede * Änderung ist eine brechende Veränderung. – zerkms
Natürlich nicht. Wenn ich eine neue Methode hinzufüge, ist das keine brechende Änderung. Wenn ich einer Methode ein zusätzliches Argument hinzufüge, ist das keine brechende Änderung. Wenn ich etwas anderes als vorher zurückgebe, ist das eine potentiell zerstörerische Veränderung. –