Il y a quelques choses que je voudrais changer afin de suivre les meilleures pratiques.
D'abord, je voudrais répondre à ce que le problème separation of concerns vous avez. Le struct Rep n'a pas besoin d'être une classe imbriquée, à mon avis, je le supprimer, comme si (et appeler aussi quelque chose d'autre):
class Repository
{
public static Rep[] rep = new Rep[6];
}
public struct RepositoryItem
{
public string main;
public string clean;
public int curParCount;
public int totalCount;
public int parStart;
public int partialStart;
public double scrollPos;
public int selectionStart;
public int selectionEnd;
public string[] status;
}
Maintenant, si vous regardez, vous disposez d'un référentiel classe qui ne fait rien, mais maintenez le tableau. Puisque c'est le cas, vous pouvez effectivement éliminer cela et créer votre tableau en tant que variable et stocker ce que vous voulez.
Cela laisse la structure RepositoryItem. Je voudrais d'abord résoudre les problèmes qui violent le design guidelines for class libraries. Le plus grand infraction est ici la désignation des champs, ils doivent être Pascal-cased:
public struct RepositoryItem
{
public string Main;
public string Clean;
public int CurParCount;
public int TotalCount;
public int ParStart;
public int PartialStart;
public double ScrollPos;
public int SelectionStart;
public int SelectionEnd;
public string[] Status;
}
Vous devez également donner vos noms de champs plus significatifs noms. Tandis que "Pos" peut vous sembler évident, cela peut ne pas être évident pour les autres. "ScrollPosition" pourrait être un meilleur nom que "ScrollPos". Maintenant, au-delà de ça, ça devient un peu plus subjectif. Les questions que vous devez vous poser sont les suivantes: devrait-il s'agir d'une structure (si vous voulez une sémantique de copie par valeur, alors c'est bien, ça devrait l'être) ou une classe? De plus, les champs devraient-ils être en lecture seule (dans ce cas, cela devrait être une classe et vous devriez avoir un constructeur qui prend toutes les valeurs)?
En outre, considérez les implications si les propriétés/champs sont en lecture seule. Si le champ Statut est en lecture seule, envisagez de l'exposer comme un IEnumerable au lieu d'un tableau, car cela vous donnera beaucoup plus de flexibilité pour assigner la valeur plutôt que de forcer la mémoire contiguë qui demande la matrice. dans le tableau, puisque la référence au tableau est en lecture seule, pas les éléments dans le tableau eux-mêmes).
Pourquoi ne vous sentez-vous pas bien? Il semble simple et il semble que cela correspond à vos besoins. Quel est le problème? – FrustratedWithFormsDesigner
Transformez-le en entity bean, créez tous les attributs privés et créez chaque méthode getter/setter pour tous vos attributs. Votre code n'est pas mauvais du tout, je lance juste ma valeur de 2 cents. –
@Elite Gentleman: Vous pensez à Java. – SLaks