
Bien qu'il n'y ait peut-être pas une seule bonne façon de formater votre code C#, s'accorder sur un style cohérent au sein de votre équipe peut aboutir à un code plus propre, plus lisible et évolutif. Un guide de style bien organisé peut vous aider à maîtriser les incohérences pour produire un produit final cohérent.
Les noms de vos variables, classes et méthodes ne sont pas de simples étiquettes. Ils portent du poids et du sens. Un bon style de nommage influence la façon dont quelqu'un lisant votre programme peut comprendre l'idée que vous essayez de transmettre.
Cette page fournit des conseils et des considérations clés à garder à l'esprit pour les conventions de nommage et le formatage du code lors de la création de votre propre guide de style.
Remarque : Les recommandations partagées ici sont basées sur celles fournies par Microsoft. Les meilleures règles de guide de style de code sont celles qui répondent le mieux aux besoins de votre équipe.
Vous pouvez trouver un exemple de guide de style de code ici ou télécharger le livre électronique complet, Utilisez un guide de style C# pour un code de jeu propre et évolutif (édition Unity 6).
Un identificateur est tout nom que vous attribuez à un type (classe, interface, struct, délégué ou énumération), membre, variable ou espace de noms.
Évitez les caractères spéciaux (barres obliques inverses, symboles, caractères Unicode) dans vos identificateurs, même si C# les autorise. Cela peut interférer avec certains outils de ligne de commande Unity. Évitez les caractères inhabituels pour garantir la compatibilité avec la plupart des plateformes.
Vous ne pouvez pas définir de variables avec des espaces dans le nom car C# utilise le caractère espace pour séparer les identifiants. Les schémas de casse peuvent atténuer le problème d'avoir à utiliser des noms ou des phrases composés dans le code source.
Ci-dessous, plusieurs conventions de nommage et de casse bien connues :
Notation Camel (camelCase)
Également connu sous le nom de camel caps, camel case est la pratique d'écrire des phrases sans espaces ni ponctuation, séparant les mots par une seule lettre majuscule. La toute première lettre est en minuscule. Les variables locales et les paramètres de méthode sont en camel case. Par exemple :
exempleJoueurContrôleur
maxHealthPoints
endOfFile
Notation Pascal (PascalCase)
Le cas Pascal est une variation du cas de chameau, où la lettre initiale est en majuscule. Utilisez ceci pour les classes, les champs publics et les noms de méthodes dans le développement Unity. Par exemple :
ExempleJoueurContrôleur
MaxHealthPoints
FinDeFichier
Notation Snake (snake_case)
Dans ce cas, les espaces entre les mots sont remplacés par un caractère de soulignement. Par exemple :
example_player_controller
max_health_points
end_of_file
Notation Kebab (kebab-case)
Ici, les espaces entre les mots sont remplacés par des tirets. Les mots apparaissent sur une "broche" de caractères tiret. Par exemple :
exemple-joueur-controleur
points-de-vie-max
fin-de-fichier
méthodologie-des-conventions-de-nommage
La notation Kebab est largement utilisée dans les technologies web et notamment pour le CSS. Nous le recommandons également pour une utilisation avec UI Toolkit USS.
notation_hongroise
Le nom de la variable ou de la fonction indique souvent son intention ou son type. Par exemple :
int iCompteur
string strNomJoueur
La notation hongroise est une ancienne convention et n'est pas courante dans le développement Unity.
Considérez ces règles pour vos variables et champs :

Les énumérations sont des types de valeur spéciaux définis par un ensemble de constantes nommées. Par défaut, les constantes sont des entiers, comptant à partir de zéro.
Utilisez la casse Pascal pour les noms et valeurs d'énumération. Vous pouvez placer des énumérations publiques en dehors d'une classe pour les rendre globales. Utilisez un nom singulier pour le nom de l'énumération car il représente une seule valeur d'un ensemble de valeurs possibles. Ils ne doivent avoir ni préfixe ni suffixe.
Remarque : Les énumérations bit à bit marquées avec l'attribut System.FlagsAttribute sont l'exception à cette règle. Vous les mettez généralement au pluriel car elles représentent plus d'un type.
Suivez ces règles standard lors de la nomination de vos classes et interfaces :
En C#, chaque instruction exécutée est effectuée dans le contexte d'une méthode.
Note : « fonction » et « méthode » sont souvent utilisés de manière interchangeable dans le développement Unity. Cependant, parce que vous ne pouvez pas écrire une fonction sans l'incorporer dans une classe en C#, « méthode » est le terme accepté.
Les méthodes effectuent des actions, appliquez donc ces règles pour les nommer en conséquence :
Les événements en C# implémentent le modèle observateur. Ce modèle de conception logicielle définit une relation dans laquelle un objet, le sujet (ou éditeur), peut notifier une liste d'objets dépendants appelés observateurs(ou abonnés). Ainsi, le sujet peut diffuser des changements d'état à ses observateurs sans coupler étroitement les objets impliqués. Vous pouvez en apprendre davantage sur l'utilisation de l'observateur et d'autres modèles de conception dans vos projets Unity dans l'e-book Améliorez votre code avec des modèles de conception et SOLID.
Nommez l'événement avec une phrase verbale. Choisissez un nom qui communique le changement d'état avec précision. Utilisez le présent ou le participe passé pour indiquer des événements « avant » ou « après ». Par exemple, spécifiez « OuvrirPorte » pour un événement avant d'ouvrir une porte ou « PorteOuverte » pour un événement après.
Dans la plupart des cas, le Action délégué peut gérer les événements nécessaires au gameplay. Vous pouvez passer de 0 à 16 paramètres d'entrée de différents types avec un type de retour de void. Utiliser le délégué prédéfini permet d'économiser du code.
Remarque : Vous pouvez également utiliser les délégués GestionnaireÉvénements ou GestionnaireÉvénements. Concordez en équipe sur la manière dont chacun mettra en œuvre les événements.
Le sujet qui invoque l'événement le fait généralement à partir d'une méthode préfixée par « On », par exemple. « OnOuvrirPorte » ou « OnPorteOuverte ».
Si le sujet s'appelle « GameEvents », vos observateurs peuvent avoir une méthode appelée « GameEvents_OpeningDoor » ou « GameEvents_DoorOpened ». Notez que cela s'appelle la "méthode de gestion des événements", à ne pas confondre avec le délégué EventHandler.
Créez des EventArgs personnalisés uniquement si nécessaire. Si vous devez passer des données personnalisées à votre événement, créez un nouveau type d'EventArgs, soit hérité de System.EventArgssoit d'une structure personnalisée.
Utilisez les espaces de noms pour vous assurer que vos classes, interfaces, énumérations, etc. ne seront pas en conflit avec celles existantes d'autres espaces de noms ou de l'espace de noms global. Les espaces de noms peuvent également éviter les conflits avec des actifs tiers provenant de l'Asset Store.
Lors de l'application des espaces de noms :
Dans le code, ces classes sont appelées Enemy.Controller1 et Enemy.Controller2, respectivement. Ajoutez une ligne using pour éviter de taper le préfixe :
using Enemy;
Lorsque le compilateur trouve les noms de classe Controller1 et Controller2, il comprend que vous voulez dire Enemy.Controller1 et Enemy.Controller2.
Si le script doit faire référence à des classes avec le même nom provenant de différents espaces de noms, utilisez le préfixe pour les différencier. Par exemple, si vous avez une classe Controller1 et une classe Controller2 dans l'espace de noms Player, vous pouvez écrire Player.Controller1 et Player.Controller2 pour éviter tout conflit. Sinon, le compilateur signalera une erreur.
using Enemy;
En savoir plus sur le formatage général ici ou consultez le livre électronique complet. Vous pouvez également explorer notre exemple de guide de style de code.