현재 공용 사용이 많은 라이브러리를 관리하고 있으며 시맨틱 버전 관리 에 대한 질문이 있습니다. 라이브러리에서 상당히 중요한 부분을 리팩토링하고 싶습니다. 잘못 구현되어 있으며 항상 잘못 구현되었습니다. 그러나이를 수행하는 것은 공개 API의 변경을 의미하며 이는 중요한 결정입니다.
내가 만들고 싶은 변화는 반복자가 사용되는 방법에 관한 것입니다. 현재 사용자는 다음을 수행해야합니다.
while ($element = $iterator->next()) {
// ...
}
적어도 PHP의 기본 Iterator 인터페이스 에서는 올바르지 않습니다 . 나는 이것을 대체하고 싶다 :
while ($iterator->valid()) {
$element = $iterator->current();
// ...
$iterator->next();
}
이는 다음과 유사합니다.
foreach ($iterator as $element) {
// ...
}
시맨틱 버전 관리에 대한 Tom의 안내서를 살펴보면 공개 API (즉 , 이전 버전과 호환 되지 않는 변경 사항)에 대한 모든 변경 사항 이 주요 릴리스를 정당화해야한다고 분명히 밝힙니다. 따라서 라이브러리는 1.7.3에서 2.0.0으로 건너 뛸 것입니다. 우리는 하나의 기능이 수정되는 것에 대해서만 이야기하고 있습니다.
나는 결국 2.0.0을 출시 할 계획이 있지만 라이브러리를 완전히 다시 작성하고 수많은 공개 API 변경을 구현했을 때라고 생각했습니다 . 이 리팩토링을 도입하면 메이저 버전 릴리스가 필요합니까? 실제로 어떻게 작동하는지 알 수 없습니다. 1.8.0 또는 1.7.4로 출시하는 것이 더 편안합니다. 누구에게 조언이 있습니까?
next()
메소드는 현재 요소를 검색하고 내부 포인터를 앞으로 이동시키는 데 사용됩니다. 어느 것이 잘못 되었습니까? next()
포인터를 이동하고 current()
검색하는 데 사용됩니다 ...
next()
이 정말 호환성을 아프게하지 않는, 포인터 이동 만