2010-05-13 10 views
2

Je réfléchis depuis un moment sur ce qu'il faut stocker dans les paramètres du projet, les objets ou les représentations numériques/chaînes de ces objets pour définir une règle et éviter de penser à cela dans le futur, donc je veux adopter la meilleure approche. D'un côté, le stockage des représentations d'objets vous garantit que ce qui est stocké est valide et vous évite d'effectuer des conversions chaque fois que vous y accédez. Vous avez seulement besoin d'objets avec l'attribut. De l'autre côté, le stockage de la représentation numérique/chaîne d'un objet facilite l'édition du paramètre, car à la fin, l'utilisateur saisira des informations numériques ou de chaîne.Que stocker dans l'application Paramètres, représentations numériques/chaînes ou objets?

Que faites-vous avec ce problème?

Répondre

1

Question intéressante. Personnellement, j'essaie de ne pas stocker d'objets complexes dans les paramètres, car (à mon avis, ce qui est subjectif) rend le code plus difficile à comprendre pour un programmeur de maintenance. J'ai tendance à utiliser les types simples (sting, int, etc) dans les paramètres.

Dans les cas où j'ai un objet complexe avec beaucoup de propriétés, alors je peux stocker les valeurs de propriété dans le fichier de paramètres. Par exemple, supposons que vous ayez un ErrorLoggingModule personnalisé ayant des propriétés telles que "DatabaseConnectionString", "ApplicationID". (Nous utilisons quelque chose de similaire et chaque application que nous écrivons obtient un identifiant d'application unique, ce qui nous donne une base de données d'erreurs centrale pour TOUTES nos applications.)

Je stockerais chacune de ces valeurs dans le fichier de paramètres, et avoir une routine pour les erreurs de journalisation. Cette routine créerait un nouvel objet ErrorLoggingModule, lirait les paramètres appropriés du fichier et appliquerait les valeurs du fichier de paramètres aux propriétés appropriées, puis ferait ce que je devrais faire avec.

+0

Que diriez-vous simplement de rendre le ErrorLoggingModule sérialisable et l'écrire directement dans les paramètres? –

+0

Pour moi, cela semble plus difficile pour le développeur de maintenance qui vient après moi. Je pourrais le faire de cette façon, mais j'ai tendance à aller la route la plus simple 90% du temps lorsqu'il est présenté avec deux options. (À moins que l'itinéraire le plus simple ne nuise à la sécurité, à l'expérience utilisateur ou à la clarté du code.) Dans ce cas, il est simplement plus simple d'utiliser le concepteur de paramètres et d'utiliser des types de données standard. – David

+0

Oui, mais vous devez ensuite valider toutes les valeurs stockées là-bas, au cas où quelqu'un éditerait directement le fichier de configuration par exemple, ce qui ajoute plus de complexité ... peut-être que vous avez raison quand même ... –