Les énumérations, ou types énumérés, sont une liste de valeurs constantes avec des noms conviviaux pour les développeurs. Ils & # 8217; sont utilisés en programmation pour être couramment utilisés pour établir un ensemble de valeurs prédéfinies qu'une variable peut prendre.
Définition d'une liste de valeurs
Les énumérations sont une liste de valeurs dont chacune est toujours unique. Vous ne pouvez pas avoir deux valeurs dans l'énumération avec le même nom. Cela les rend très utiles pour définir tous les états de valeur possibles qu'une fonction peut gérer.
Par exemple, vous pourriez avoir une énumération appelée & # 8220; Fruits, & # 8221; avec une liste de fruits possibles que l'application comprend. C'est la principale différence entre simplement utiliser une chaîne pour représenter cette variable & # 8212; une chaîne peut avoir une infinité de valeurs possibles, alors que cette énumération ne peut en avoir que trois.
Vous pouvez ensuite utiliser cette énumération dans votre code. Par exemple, vérifier si le type de l'entrée utilisateur est égal à un Apple, ou même le passer comme argument à une instruction switch/case, faire quelque chose de spécifique pour chaque type de valeur possible.
Sous le capot, les énumérations ont elles-mêmes des valeurs. Cela dépendra de l'implémentation du langage, mais en C # par exemple, les énumérations ont des valeurs entières par défaut. Les valeurs par défaut commencent à 0, 1, 2, 3, etc., mais cela peut être modifié manuellement pour définir chaque entrée d'énumération sur une valeur spécifique. Par exemple, les codes d'état HTTP:
Qui peut ensuite être reconverti et à la valeur et au type enum, en utilisant la conversion de base:
En plus d'être simplement utiles pour définir des ensembles d'éléments, les énumérations sont idéales pour l'expérience des développeurs. Même si vous effectuez une conversion en chaîne ou en entier avant d'envoyer des données à une API, l'utilisation d'énumérations dans votre base de code permet une plus grande flexibilité et conduit à un code plus propre.
De plus, le fait d'avoir des listes déroulantes de saisie semi-automatique pour une liste de valeurs possibles vous aide non seulement, mais aide toute autre personne travaillant sur votre base de code à l'avenir. Vous ne voulez pas conserver du code qui prend des chaînes comme arguments et fait des choses aléatoires en fonction de l'entrée. L'utilisation d'une énumération définit à la place strictement le comportement de l'application.
Inconvénients de l'utilisation des énumérations
Le principal inconvénient des énumérations est quand ils quittent votre base de code et perdent leur signification particulière. Par exemple, si vous avez une API dans laquelle vous stockez et envoyez des données, vous devez d'abord sérialiser l'énumération, qui par défaut prend probablement le numéro sous-jacent de 0, 1, 2, etc. Certaines langues prennent en charge les énumérations avec des valeurs de chaîne sous-jacentes, ou des règles de sérialisation d'énumérations personnalisées, qui peuvent aider à atténuer ce problème.
Cela peut également être un problème si vos énumérations changent. Une fois que vous commencez à utiliser une énumération, vous ne pouvez pas changer l'ordre de celle-ci, ajouter uniquement de nouveaux éléments à la fin. Sinon, les données stockées à l'aide de l'ancienne version de l'énumération deviendraient obsolètes et brouillées.
Enum Types As Flags
Une autre utilisation courante des énumérations consiste à définir des indicateurs au niveau du bit. Il s'agit d'un concept assez avancé, mais fondamentalement, chaque valeur d'énumération représente une seule valeur booléenne. Ensemble, toute l'énumération peut être stockée dans un entier et utilisée pour effectuer des recherches rapides de données booléennes.
Cela fonctionne car chaque valeur d'énumération est définie sur un bit différent dans le nombre sous-jacent. Pour le binaire, cela signifie que les valeurs d'énumération seront 0, 1, 2, 4, 8, 16, etc. Ensuite, vous pouvez les additionner pour représenter une liste de valeurs booléennes.
Pourquoi faire cela plutôt que plusieurs booléens? Eh bien, d'une part, cela économise de l'espace, ce qui dans certaines situations (où vous en stockez beaucoup) peut être un avantage. Mais plus important encore, il est très rapide d'accéder à chaque valeur, en particulier lors de l'accès à plusieurs valeurs. Par exemple, si vous souhaitez vérifier si c'est le week-end, vous pouvez vérifier si c'est samedi | Dimanche, tous à partir du même octet qui a été chargé en mémoire. Le processeur n'a besoin que de récupérer un élément pour obtenir une liste de tous les états du drapeau.