Mi chiedo cosa c'è di meglio in termini di buona progettazione di OOP, codice pulito, flessibilità ed evitare odori di codice in futuro. Situazione dell'immagine, in cui hai molti oggetti molto simili che devi rappresentare come classi. Queste classi sono prive di funzionalità specifiche, solo classi di dati e sono diverse solo per nome (e contesto) Esempio:
Class A
{
String name;
string description;
}
Class B
{
String name;
String count;
String description;
}
Class C
{
String name;
String count;
String description;
String imageUrl;
}
Class D
{
String name;
String count;
}
Class E
{
String name;
String count;
String imageUrl;
String age;
}
Sarebbe meglio tenerli in classi separate, ottenere una leggibilità "migliore", ma con molte ripetizioni di codice, o sarebbe meglio usare l'ereditarietà per essere più ASCIUTTI?
Usando l'ereditarietà, finirai con qualcosa del genere, ma i nomi delle classi perderanno il significato contestuale (a causa di is-a, non has-a):
Class A
{
String name;
String description;
}
Class B : A
{
String count;
}
Class C : B
{
String imageUrl;
}
Class D : C
{
String age;
}
So che l'ereditarietà non è e non dovrebbe essere utilizzata per il riutilizzo del codice, ma in questo caso non vedo altri modi per ridurre la ripetizione del codice.