Attualmente gestisco una libreria che ha un elevato utilizzo pubblico e ho avuto una domanda su versioning semantico . Voglio refactoring una parte abbastanza importante della libreria che viene implementata in modo errato - ed è sempre stata implementata in modo errato. Ma fare ciò significherebbe modifiche all'API pubblica, che è una decisione importante.
Il cambiamento che voglio fare ruota attorno a come vengono utilizzati gli iteratori. Attualmente, gli utenti devono fare questo:
while ($element = $iterator->next()) {
// ...
}
Che non è corretto, almeno nella lingua nativa di PHP Interfaccia Iterator . Voglio sostituire con questo:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
che è analogo a:
foreach ($iterator as $element) {
// ...
}
Se si guarda alla guida di Tom alla versione semantica, egli afferma chiaramente che qualsiasi modifica all'API pubblica (cioè quelli che sono non compatibili con le versioni precedenti), dovrebbe giustificare una versione principale. Quindi la libreria passerebbe dalla 1.7.3 alla 2.0.0 che, per me, è un passo troppo lontano. Stiamo solo parlando di una funzione che viene riparata.
Ho in programma di rilasciare alla fine la 2.0.0, ma pensavo che questo fosse quando hai completamente riscritto la libreria e implementato numerose modifiche dell'API pubblica. L'introduzione di questo refactoring giustifica una versione principale della versione? Non riesco davvero a vedere come funziona, mi sento più a mio agio nel rilasciarlo come 1.8.0 o 1.7.4. Qualcuno ha qualche consiglio?