8
votes

Quel est le meilleur moyen d'éviter les clés de chaîne magiques? Utilisation des touches de chaîne constante dans une classe ou en utilisant l'énumération?

Mon idée est d'éviter les clés de chaîne magiques dans mon application ASP.NET MVC. Pour ce faire, je souhaite créer des clés constantes de chaîne à partager dans l'application.

Par exemple, je peux écrire templata [myClass.message] ou templdata [myenum.message. Tostring ()] au lieu de tempdata ["message"] . xxx

et xxx

Mes questions sont: Quelle est la meilleure façon d'éviter les clés de chaîne magiques? Utilisation des touches de chaîne constante dans une classe ou en utilisant une énumération avec tostring () ?


0 commentaires

3 Réponses :


5
votes

Vous devriez aller pour les cordes constantes comme cela peut également être des espaces de contention / des caractères spéciaux, si ce sont vos exigences. Sinon, changez templdata vers Dictionnaire qui est une meilleure approche.


0 commentaires

5
votes

Il appartient à la préférence et à l'utilisation.

Vous pouvez accepter les valeurs énumérées sous une manière fortement dactylographiée: p> xxx pré>

ou p>

TempData[MyEnum.Message]


0 commentaires

2
votes

Je sais que cela a été répondu, mais je veux joindre mes pensées ici. Vous vous concentrez de trop près sur la mécanique et non le problème que vous rencontrez: «Comment puis-je vous échapper de casser mon application lorsque je déciderai de choisir Tempdata [" Message "] devrait être une session [" alerte "]" ( ou quelque chose comme ça.

Les chaînes magiques ne s'appliquent pas aux clés du dictionnaire - elles s'appliquent aux messages envoyés à la routine qui fait quelque chose en fonction de la valeur de la chaîne. Quelque chose comme "SteStatus (" actuel ")" serait magique.

Ce que vous voulez faire ici est d'utiliser une méthode centralisée pour manipuler la messagerie. Créez-vous une classe d'assistance et appelez-la «Messagerie» si vous aimez - IR Obtenez toutes les rails et appelez-le «Flash». Ensuite, vous pouvez faire quelque chose de groovy comme "flash.message (" salut là-bas ")" - cela empêche le mécanisme caché (comme il devrait être) et que vous ne vous inquiétez pas pour ces clés de dictionnaire stupide.

Vous pouvez également développer ceci - "flash.alert (" oh non! ') "- etc.


1 commentaires

Bon post. Quant à moi, j'aime stocker des données comme "SetStatus (" actuel ")" dans dB et (ou) dans le cache. Parce que si je veux changer cela, je n'ai pas besoin de reconstruire mon application.