Conventions de nommage des fichiers de mise en page?
Quelles sont les conventions de nommage des fichiers de mise en page que les gens ont mises au point.
Je n'ai rien trouvé en ligne, mais j'ai pensé à utiliser la convention suivante.
Qu'est-ce que tout le monde en pense?
- activity_*
- dialog_*
- list_item_*
C'est tout ce avec quoi j'ai travaillé jusqu'à présent.
Aussi, qu'en est-il de la dénomination de l'activité par rapport à sa mise en page? Par exemple:
-> res
-> layout
-> activity_about_us.xml
-> src
-> activity
-> AboutUs.java
5 réponses
Curieusement, essayer de google cette question apporte seulement cette page comme résultat significatif... Pour le dernier semestre, j'utilise une convention de nommage similaire à la vôtre, mais avec des préfixes plus courts. Exemple: Pour l'activité qui affiche l'écran "à propos de nous":
Nom de la Classe: ActAboutUs
. Préfixer la classe est un peu exagéré, mais il distingue clairement les classes d'activité des autres. Initialement, j'ai utilisé un répertoire séparé pour toutes les activités (similaire à votre approche) mais après quelques le temps que j'ai réalisé que pour les applications plus grandes peut être qu'il est préférable de regrouper dans les répertoires par fonctionnalité que par superclasse (C'est-à-dire activité). Il est plus facile pour moi de travailler dans un seul répertoire par exemple /src/settings/
lorsque je travaille sur les paramètres. De cette façon, tous les fichiers java dont j'ai besoin sont dans un seul répertoire, donc je n'ai pas besoin de me promener:
/src/settings/ActSettingsGlobal.java
/src/settings/ActSettingsNet.java
/src/settings/Settings.java
/src/settings/SettingsDBAdapter.java
/src/settings/etc...
Cette approche permet également de diviser le travail entre différents développeurs, c'est-à-dire que chacun travaille dans son propre répertoire sur une fonctionnalité distincte, donc pas de marcher les uns sur les autres :-).
Certaines personnes préfèrent les suffixes mais je les ai trouvés moins utiles. Les préfixes aident à regrouper les choses par ordre alphabétique comme dans l'exemple ci-dessus: Act*
le préfixe est trié en premier afin que toutes les activités soient commodément en haut.
J'envisage même d'utiliser Act_
comme préfixe qui est plus lisible bien qu'il soit en conflit avec les conventions de nommage java...
Nom de fichier de mise en page: act_about_us.xml
. Dans res/layout/
, nous n'avons pas le "luxe" des sous-répertoires, ce qui est tout à fait regrettable la seule façon de regrouper les choses est d'utiliser le préfixe approprié comme act_
, dlg_
, etc...
ID De Chaîne : <string name="act_about_us_dlg_help1_title" ...
string.xml
est l'endroit où nous avons le plus de problèmes avec duplicate name
s. Il est très facile de créer des doublons si la convention de nommage comme activity_element_item
n'est pas utilisée. Il ajoute beaucoup de frappe supplémentaire, mais il vous évite beaucoup de confusion plus tard.
Pour les chaînes globales (application large), nous utilisons le préfixe "global_"
, par exemple global_btn_ok
, global_msg_no_inet_conn
. Habituellement nous faisons une personne responsable de toutes les chaînes global_
donc, si quelqu'un a besoin d'une nouvelle chaîne ou d'un changement, il doit se synchroniser avec lui afin d'éviter de créer un désordre.
(Maintenant je me rends compte que activity__element__item
(deux traits de soulignement) est plus clair et lisible que activity_element_item
)
Dans l'ensemble, Je ne peux toujours pas me débarrasser du sentiment qu'il y a quelque chose de mal dans mon approche parce que je ne peux pas croire que les développeurs de google aient créé un cadre aussi gênant quand il s'agit de travailler avec des fichiers, des identifiants, des noms, etc...
Je pense que la convention de nommage suivante devrait être follow
Pour l'activité
Si le nom de notre activité est
DisplayListActivity
Alors notre nom de layoutname devrait être
display_list_activity.xml
Pour les éléments de liste, nous pouvons inclure une catégorie dans le nom de mise en page de l'élément de liste
country_list_item.xml
Et pour les boîtes de dialogue, leur action peut être incluse
delete_country_dialog.xml
Lorsque je cherche un groupe de mises en page, ce qui est la façon dont j'ai tendance à travailler sur eux, je trouve efficace de toujours ajouter le nom de la classe et de suivre avec toutes les sous-mises en page. Par Exemple:
Nom de la Classe: AboutActivity.java
Nom du modèle: about_activity.xml
Sous-Nom du modèle: about_activity_menu.xml
sous-Sous-disposition de Nom: about_activity_menu_item.xml
Votre activité sera toujours au sommet de chaque groupe et la chasse aux non-activités devient moins une corvée. Quelqu'un sait pourquoi les sous-dossiers ne le sont pas une chose encore? Je m'attends à l'efficacité et à la simplicité sur le back-end, mais j'imagine que cela ne ferait pas trop mal.
C'est une bonne lecture https://jeroenmols.com/blog/2016/03/07/resourcenaming/
, Fondamentalement, vous suivez WHAT WHERE DESCRIPTION SIZE
Par exemple, le fichier de mise en page
- activity_main: vue du contenu de MainActivity
- fragment_articledetail: vue pour L'ArticleDetailFragment
Chaînes
- articledetail_title: titre de L'ArticleDetailFragment
- feedback_explanation: explication des commentaires dans FeedbackFragment
Drawable - all_infoicon_large: grande version de l'icône d'information générique - all_infoicon_24dp: version 24dp de l'icône d'information Générique
La première partie d'un nom de fichier de mise en page doit toujours être le type de la classe correspondante.
Par exemple, si nous avons une classe MainActivity
(type est Activity
dans ce cas), le fichier de mise en page correspondant doit être appelé activity_main.xml
Cela signifie que disons que nous avons une boîte de dialogue appelée WarningDialog
, le fichier de mise en page correspondant devrait être appelé dialog_warning.xml
, il en va de même pour les fragments, etc.
Cela peut sembler familier parce que c'est aussi comment les fichiers activity/layout
sont nommés lors de la création d'un nouveau projet dans Android Studio (MainActivity
-> activity_main.xml
).