J'ai une structure de classe C# que j'aimerais remanier pour utiliser les meilleures normes de codage (utilisation d'interfaces/de classes abstraites) afin qu'elle soit plus facile à maintenir et à réutiliser. Le code tel qu'il est actuellement n'est pas terrible, mais il n'est pas idéal.
J'ai une série de classes TableItemGroup : AccountTableItemGroup, PendingVoteTableItemGroup et RequestingVoteTableItemGroup. Chaque TableItemGroup contient une chaîne SectionName et une liste pour son TableItem correspondant ... comme suit :
public class AccountTableItemGroup {
public string SectionName { get; set; }
public List<AccountTableItem> Items
{
get { return this._items; }
set { this._items = value; }
}
public List<AccountTableItem> _items = new List<AccountTableItem>();
public AccountTableItemGroup()
{
}
}
À l'avenir, il y aura beaucoup plus de TableItemGroups et s'ils sont tous identiques à l'exception de la partie Liste, je ne veux pas avoir à copier le code et à créer un nouveau groupe à chaque fois pour faire ce petit changement. Je sais qu'il doit y avoir une meilleure solution. J'aimerais continuer à utiliser les génériques List<> afin de ne pas avoir à mouler quoi que ce soit par la suite.
L'autre partie est constituée des TableItems. J'ai un AccountTableItem, un PendingVoteTableItem et un RequestingVoteTableItem. Les TableItems sont différents les uns des autres, mais ils partagent tous trois chaînes de caractères communes : TitleLabel, DetailLabel et ImageName. Mais ensuite, chaque TableItem peut avoir ou non des propriétés ou des méthodes supplémentaires, comme par exemple :
public class AccountTableItem
{
public string TitleLabel { get; set; }
public string DetailLabel { get; set; }
public string ImageName { get; set; }
public bool SwitchSetting { get; set; }
public AccountTableItem()
{
}
}
Ma question à vous tous est donc la suivante : comment redéfinir la structure de mes classes afin de permettre une réutilisation maximale du code et d'utiliser les meilleures normes de codage ?
Je pensais avoir une classe abstraite TableItem ou utiliser une interface pour TableItemGroup ? Je sais que l'utilisation d'une interface ou d'une classe abstraite est préférable pour les normes de codage, mais je ne vois pas comment cela pourrait réduire la quantité de code que j'aurai ?
Merci beaucoup pour votre aide.