Atualmente, gerencio uma biblioteca que tem muito uso público e tive uma pergunta sobre o controle de versão semântico . Quero refatorar uma parte bastante importante da biblioteca que é implementada incorretamente - e sempre foi implementada incorretamente. Mas fazer isso significaria alterações na API pública, que é uma decisão importante.
A mudança que eu quero fazer gira em torno de como os iteradores são usados. Atualmente, os usuários precisam fazer isso:
while ($element = $iterator->next()) {
// ...
}
O que está incorreto, pelo menos na interface Iterator nativa do PHP . Eu quero substituir por isso:
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
que é análogo a:
foreach ($iterator as $element) {
// ...
}
Se você olhar o guia de Tom para versões semânticas, ele afirma claramente que qualquer alteração na API pública (ou seja, aquelas que não são compatíveis com versões anteriores) deve justificar uma versão importante. Portanto, a biblioteca saltaria de 1.7.3 para 2.0.0, o que, para mim, é um passo longe demais. Estamos falando apenas de um recurso que está sendo corrigido.
Tenho planos de finalmente lançar a 2.0.0, mas pensei que era quando você reescrevia completamente a biblioteca e implementava inúmeras alterações de API pública. A introdução dessa refatoração justifica o lançamento de uma versão principal? Realmente não consigo ver como funciona - me sinto mais confortável em liberá-lo como 1.8.0 ou 1.7.4. Alguém tem algum conselho?
next()
método é usado para recuperar o elemento atual E mover o ponteiro interno para frente. O que está errado. next()
deve mover o ponteiro, e current()
é usado para recuperar ...
next()
só isso é move o ponteiro, isso realmente não quebrar a compatibilidade