Supponiamo che io usi un framework open source nel mio progetto e che non contribuisca (invia modifiche) a quel framework e che la versione corrente sia stabile, dovremmo mantenere invariato il framework quando possibile?
per esempio, se ho trovato una funzione in una classe di framework non soddisfa i miei requisiti:
public class Fruit{
public float calculatePrice(){
return weight*1.2;
}
}
Lo avvolgerei per aggiungere i miei requisiti:
public class MyFruit{
Fruit fruit;
public float calculatePrice(){
return fruit.calculatePrice()*myConstant;
}
}
invece di modificare direttamente Fruit e, per un altro esempio, se ho bisogno di utilizzare una proprietà protetta nella classe (ad esempio: locale):
public class Fruit{
protected String locale;
}
Vorrei estenderlo per accedere alle impostazioni locali
public class MyFruit{
public void checkLocale(){
if(locale.equals("abc")){
}
}
}
invece di cambiare locale in pubblico.
Penso che le motivazioni alla base siano:
-
Le risorse dei framework (es: tutorial, comportamento, bug, problemi) sono basate sulla versione originale del framework, quando cambiamo il framework direttamente, le risorse potrebbero non essere più applicabili al mio framework modificato , o potremmo non essere in grado di utilizzare direttamente la risorsa (es: copia e incolla esempi online)
-
È più semplice aggiornare il framework quando il framework mantiene l'aspetto originale
-
Se modifichiamo i codici nel framework, possiamo introdurre bug nel framework e il debug dei framework è più difficile del debug dei miei codici personalizzati.
-
Mantenere i framework nella versione originale ci consente di aggiungere altre estensioni per i framework facilmente perché la maggior parte delle estensioni vengono lavorate in base alla versione originale
-
È più difficile chiedere aiuto se utilizziamo un framework modificato personalizzato perché potresti dover pubblicare e spiegare le parti modificate del framework
-
Quando si verifica un problema, se usiamo solo la versione originale, è più facile e veloce per i volontari configurare l'ambiente, quindi riprodurre e scoprire il problema, perché possono semplicemente scaricare il framework direttamente e quindi aggiungere il mio codici aggiuntivi.
è vero che non dovremmo modificare i codici nei quadri direttamente quando possibile? E questo atteggiamento è corretto?