Sto usando versioning semantico 2.0.0. Nella mia situazione ho un'implementazione concreta di alcune interfacce A in una biblioteca. E ho l'interfaccia che viene implementata (chiamala B ) in un'altra libreria.
Capisco che se dovessi aggiungere nuovi metodi all'interfaccia B allora quella sarebbe considerata una modifica importante per B perché qualsiasi libreria che implementa l'interfaccia (ad esempio come A ) non verrebbe compilato fino all'implementazione di qualsiasi metodo aggiunto. Il mio ragionamento per questo è considerato un cambiamento importante perché ora hai reso un'API incompatibile con B (in base al versioning semantico). Penso di capire chiaramente questo concetto, ma correggimi se sbaglio.
Ecco la mia domanda, e la parte che non capisco ... Cosa succede a A , il concreto che sta effettivamente implementando l'interfaccia? Ottiene una modifica del numero di revisione maggiore o minore ? Immagino che da un punto di vista si potrebbe dire che ottiene una modifica di revisione minore perché l'aggiunta di un metodo pubblico non lo rende incompatibile come ad esempio ... se si dovesse cambiare il nome di un metodo ... Suppongo che potresti anche sostenere che otterrebbe un importante cambiamento perché ha bisogno di implementare l'interfaccia per funzionare. Uno di questi ragionamenti è corretto o nessuno dei due?