Mi chiedo cosa c'è di meglio in termini di buon design OOP, codice pulito, flessibilità ed evitando odori di codice in futuro. Situazione dell'immagine, in cui sono presenti molti oggetti molto simili che è necessario rappresentare come classi. Queste classi non hanno alcuna funzionalità specifica, 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 "migliore" leggibilità, ma con molte ripetizioni di codice, o sarebbe meglio usare l'ereditarietà per essere più DRY?
Usando l'ereditarietà, ti ritroverai con qualcosa del genere, ma i nomi delle classi perderanno il significato contestuale (perché is-a, non ha-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 usata per il riutilizzo del codice, ma non vedo in nessun altro modo possibile come ridurre la ripetizione del codice in questo caso.