Que sont les énumérations (types énumérés) dans la programmation et pourquoi sont-elles utiles? –
Les énumérations, ou types énumérés, sont une liste de valeurs constantes avec des noms conviviaux pour les développeurs. Ils sont utilisés dans la programmation pour établir un ensemble de valeurs prédéfinies qu’une variable peut prendre.
Sommaire
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 pouvez avoir une énumération appelée «Fruits», avec une liste de fruits possibles que l’application comprend. C’est la principale différence entre utiliser simplement un string
pour représenter cette variable – un string
peut avoir des valeurs possibles infinies, 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 en tant qu’argument à un switch/case
déclaration, en faisant 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 converti dans les deux sens en valeur et en type enum, à l’aide de 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 convertissez 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.
En outre, 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. des valeurs ou des règles de sérialisation d’énumération personnalisées, ce qui peut aider à résoudre 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 en modifier l’ordre, ajoutez 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.
Énumérer les types comme indicateurs
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, l’énumération entière 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 voulez vérifier si c’est le week-end, vous pouvez vérifier si c’est Saturday | Sunday
, tous à partir du même octet qui a été chargé en mémoire. Le processeur n’a besoin que d’extraire un élément pour obtenir une liste de tous les états du drapeau.