Question

Je lis Quand utiliser des classes en C #, mais la partie supérieure réponse ne répond pas nécessairement à ma question. J'ai une application qui interface avec un peu de matériel similaire, via un serveur HTTP. Chaque appareil doit être connecté à et les informations d'identification sont normalement les mêmes. J'utilise Properties.Settings.Default.etc pour gérer de larges paramètres d'application; Cependant, pour la facilité que je garde la trace du dernier nom d'utilisateur / mot de passe utilisé lors de la connexion individuellement dans un appareil. Les valeurs par défaut sont par une fenêtre réglable options sont utilisées en premier et restent les mêmes, sauf modification par la fenêtre d'options, en dépit des paramètres temporaires et le changement utilisé dans la place des valeurs par défaut.

Quoi qu'il en soit, c'est le scénario ... en ce qui concerne la question, je fais ceci:

private static class TemporarySettings
{
    public static string Username = Properties.Settings.Default["Username"].ToString();
    public static string Password = Properties.Settings.Default["Password"].ToString();
}

est-ce stupide?

Était-ce utile?

La solution

Il est pas stupide, et il peut résoudre votre problème tout à fait (si elle le fait, ne change pas). Il y a des problèmes que cette approche pourrait entraîner sur la route, cependant, et il aide à savoir ce que ceux-ci sont.

  1. Si vous voulez changer le nom d'utilisateur et mot de passe sans redémarrer votre application, vous n'aurez pas cette option. Vous pouvez écrire la logique pour regarder le fichier de configuration pour le changement et recharger les valeurs si elles changent.
  2. Si vous voulez « réutiliser » votre code (en particulier si vous mettez un comportement plus comme le suivi des changements) pour plusieurs jeux de nom d'utilisateur et mot de passe, vous devrez convertir en une instance.
  3. Si vous voulez jamais aux classes de tests unitaires qui dépendent de cette classe, vous aurez un temps très difficile stubbing les valeurs.

Je le répète, cependant, vous ne devriez pas avoir peur de la solution la plus simple (que vous avez défini) à cause de ces potentiel questions à moins que vous pensez qu'il ya une chance réaliste que vous serez brûlé par dans l'avenir. Dans le cas contraire, il ne sera probablement pas un refactoring très difficile de passer à une classe d'instance plus tard, lorsque le besoin se fait sentir.

Autres conseils

Mieux encore, les marquer readonly ou utiliser des propriétés qui ont seulement getters.

Vous définissez le nom d'utilisateur et mot de passe à la même valeur, mais à part ça, non.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top