Pourquoi ne pas Android utiliser plus d'énumérations?
J'ai commencé à vraiment comme aide de C# et Java les énumérations dans mon code pour plusieurs raisons:
- Ils sont beaucoup plus type-safe que des entiers, des chaînes de caractères, ou des ensembles de booléenne drapeaux.
- Ils conduire à un code plus lisible.
- Il est plus difficile de définir un enum pour une valeur non valide qu'un int ou string.
- Ils le rendre facile pour découvrir les valeurs possibles pour une variable ou d'un paramètre.
- Tout ce que j'ai lu indique que tout entiers en C# et la plupart des machines virtuelles.
Cependant, l'Android cadre a de nombreux cas où des drapeaux de différents types doivent être transmis, mais aucune d'entre elles semblent utiliser les énumérations. Un couple d'exemples où je pense leur utilisation serait bénéfique sont Toast.LENGTH_SHORT
/Toast.LENGTH_LONG
et View.GONE
, View.VISIBLE
, etc.
Pourquoi est-ce? Ne enums effectuer de pire que de simples valeurs entières dans Dalvik? Est-il un autre inconvénient que je ne suis pas au courant?
- C'est ok pour utiliser enum maintenant. Voir stackoverflow.com/questions/5143256/...
- Super! J'aime les énumérations et je n'avais pas eu l'occasion de prendre encore.
Vous devez vous connecter pour publier un commentaire.
Cette réponse est de jour en date de Mars 2011.
Les énumérations peuvent être utilisés sur Froyo et en fonction de cette réponse (Pourquoi était “d'Éviter les Énumérations Où Vous avez Seulement Besoin Ints” supprimés à partir de Android astuces pour améliorer les performances?) à partir d'un membre de la VM Android équipe (et son blog).
Réponse Précédente:
Le Android officielle de l'équipe de la recommandation est d'éviter les énumérations, à chaque fois que vous pouvez l'éviter:
Source: Éviter Les Énumérations Où Vous Avez Seulement Besoin Ints
Entiers sont plus petits, et nécessitent moins de frais généraux, quelque chose qui est encore de questions sur les appareils mobiles.
IntDef
etStringDef
, qui permet de déclarer une sorte de typedef, ainsi que l'utilisation de constantes de type int est très pratique. blog.shamanland.com/2016/02/int-string-enum.htmlUn de mes collègues a effectué un petit test concernant cette situation. Il générés automatiquement, un
class
et unenum
avec la même quantité de "enum". Je crois qu'il a généré 30000 entrées.Les résultats étaient les suivants:
.class
pour laclass
était à peu près 1200KB.class
pour laenum
était d'environ 800KOEspère que cela aide quelqu'un.