Di recente stavo pensando a quanto segue. Secondo il principio di apertura / chiusura, una volta che un pezzo di codice X è stato implementato e testato, non dovrebbe essere più modificato.
X può ancora essere sostituito da un altro pezzo di codice che implementa la stessa interfaccia (magari con un'implementazione migliore), oppure possono essere aggiunte nuove funzioni e metodi. Ma la parte che è già stata implementata e (accuratamente) testata dovrebbe ora funzionare come una scatola nera che può essere invocata dall'esterno ma non dovrebbe essere più modificata.
Quindi, se il principio di apertura / chiusura è implementato correttamente, la proprietà del codice condiviso non dovrebbe essere più così importante perché nessuno dovrà modificare un pezzo di codice finito e autonomo. Questo mi sembra abbastanza naturale ma non ho mai sentito di questa idea prima. C'è qualche letteratura o scuola che propone questa tesi: il principio di apertura / chiusura rende meno importante la proprietà condivisa del codice?