Les Enums VS Classes VS Interfaces
J'ai lu beaucoup de messages sur ce site concernant l'utilisation de constantes.
Question:
Quand devrais-je utiliser les Énumérations pour les constantes, vs en utilisant des classes ou des interfaces.
Je vois 2 situations clés, je suis à la recherche d'adresse.
1. Les Constantes globales utilisées dans des applications par de multiples projets.
Exemple:
- Commune de journalisation des chaînes
- Contenant des références comme une base de données de la cartographie de référence utilisé dans les
WebSphere OREILLE
2. L'Objet Spécifique Des Constantes
Exemple:
- Employé les taux de salaire pour un Employé de l'Objet
De tout ce que j'ai lu c'est ce que je pense avoir une emprise sur, et ce que je suis à la recherche d'un avis sur.
Pour la situation 1:
Approche de conception: Utilisation d'une classe finale et statiques import.
Vu ici: Qu'est-ce que l'utilisation de l'interface constantes?
Pour La Situation 2:
Approche de conception: Appliquer l'utilisation des Énumérations pour représenter ces constantes comme un objet.
Autres points à retenir:
- Si la constante de chaîne appartient à la classe et vous avez seulement besoin de la chaîne de valeur de la garder dans la classe qui l'utilise
- Ne pas utiliser une Interface pour la situation 1. Comme mentionné dans le lien ci-dessus comme une Constante de l'Interface Anti-modèle.
.
Merci d'avance pour les pensées et les opinions.
OriginalL'auteur haju | 2011-05-26
Vous devez vous connecter pour publier un commentaire.
Constantes globales que vous avez mis il devrait en fait être dans un fichier de propriétés, car elle permet à chaque application afin de configurer individuellement sans modification de code. Pour objet spécifique les constantes de mes règle générale de pouce sur
Enum
contrestatic final
en général, je penche vers l'combien il y a d'éléments et des moyens liés à ces éléments. Si il y a un grand rapport entre eux, tels que lesSuits
dans un jeu deCards
puis j'irais pour l'enum. Si c'est l'âge par défaut pour un utilisateur, puis cela devient une finale comme il n'y a pas de but pour en faire un enum comme il n'aurait pas besoin d'être référencé dans de nombreux domaines. Ce sont juste quelques pensées sur chacune des voies, j'ai approché il.ceux-ci pourraient être encore dans le fichier de propriétés. La raison en est que l'enregistreur a encore de construire le journal de déclaration des constantes de ne pas aider à la performance. Le fichier de propriétés rend également plus facile si jamais vous changez pour une autre langue comme le Japonais ou le C#.
Je ne pense pas que la langue des commentaires serait de changer, à moins que le code pourrait être rachetée par une autre société, lol, je pense alors il n'y aurait plus de choses à vous inquiéter au sujet de lol. Pour moi, le fichier de propriétés pour quelque chose comme ça, et avoir la charge par le biais d'un PropertyManager pour persister dans d'autres classes. Je préfère la simplicité d'avoir une classe statique de l'importation. Tous les de préférence dans ce cas.
OriginalL'auteur Woot4Moo
Constantes globales utilisées par les différents projets:
Enum
Mieux utiliser
Enum
surpublic static final
membres dans une classe. Plus propre et facile à comprendre je pense.Objet spécifique constantes:
public static final members in Class
. Car, ils ne sont nécessaires que dans le champ d'application de l'objet, alors pas besoin de créé un nouveau Enum.Nice lire
Mise à jour (correction de lien brisé):
OriginalL'auteur zengr
Il sonne comme presque tout ce que vous avez énumérées pour les deux numéros 1 et 2 appartiennent dans les fichiers de configuration ou des tables de base de données.
Voulez-vous de les re-compiler du code lors de vos employés à obtenir une augmentation de salaire ou une page de changements de nom?
À moins qu'il y est une raison impérieuse de tout ce qui est constante doit être modélisé comme un enum. De cette façon, vous vous rendez compte les avantages de rapide de l'objet de comparaison d'égalité et de vous éviter des problèmes de constantes de Chaîne.
La portée de ces énumérations, cependant, est spécifique à l'application. Si l'énumération n'est utilisé que par une classe qu'elle devrait être une affaire privée enum. Si il est partagé par plusieurs classes, alors il doit être dans son propre fichier de définition de classe.
Quel est le but réel de la commune de journalisation déclaration? J'ai écrit beaucoup de lignes de code et ne trouve pas la nécessité pour le commun des instructions de journalisation. Mais je ne connais pas votre situation, donc je vais essayer de ne pas juger. Je voudrais encore affirmer que ceux-ci appartiennent à une configuration ou un fichier de propriétés, telles qu'elles peuvent être modifiées/internationalisés sans nécessiter de code modifie plus profiter des avantages de la propriété de substitution en tirant parti des cadres appropriés. Les constantes de classes détruire OO code en forçant un contre nature statique de la dépendance entre chaque classe dans le système et les constantes de la classe
OriginalL'auteur nsfyn55