Bien qu'il n'y ait pas une seule façon de formater votre code C#, l'adoption d'un style cohérent au sein de votre équipe peut permettre d'obtenir une base de code plus propre, plus lisible et plus évolutive. Cette page propose des conseils et des considérations clés à garder à l'esprit pour vos classes, méthodes et commentaires lors de la création de votre propre guide de style.
Remarque: Les recommandations formulées ici sont basées sur celles fournies par Microsoft. Les meilleures règles du guide de style de code sont celles qui s'adaptent aux besoins de votre équipe.
Vous pouvez trouver un exemple de guide de style ici ou télécharger le livre électronique complet, Créer un guide de style C# : Écrire un code plus propre et évolutif.
En plus de l'attribution de noms, le formatage permet de réduire les conjectures et d'améliorer la clarté du code. En suivant un guide de style standardisé, les revues de code s'intéressent moins à l'apparence du code qu'à ce qu'il fait.
Essayez de personnaliser la façon dont votre équipe va formater le code. Tenez compte de chacune des suggestions de formatage de code suivantes lors de l'élaboration de votre guide de style Unity. Vous pouvez choisir d'omettre, de développer ou de modifier ces exemples de règles pour les adapter aux besoins de votre équipe.
Dans tous les cas, réfléchissez à la manière dont votre équipe mettra en œuvre chaque règle de formatage, puis demandez à tout le monde de l'appliquer uniformément. Reportez-vous au guide de style de votre équipe pour résoudre les éventuelles divergences. Moins vous pensez au formatage, plus vous pouvez travailler de manière productive et créative.
Examinons quelques règles de mise en forme.
Une propriété fournit un mécanisme flexible pour lire, écrire ou calculer les valeurs d'une classe. Les propriétés se comportent comme des variables membres publiques, mais il s'agit en fait de méthodes spéciales appelées accesseurs.
Chaque propriété dispose d'une méthode get et set permettant d'accéder à un champ privé, appelé champ d'appui (backing field). champ d'appui. De cette façon, la propriété encapsule les données, les protégeant ainsi des modifications non désirées par l'utilisateur ou des objets externes. Les fonctions "getter" et "setter" ont chacune leur propre modificateur d'accès, permettant à votre propriété d'être en lecture-écriture, en lecture seule ou en écriture seule.
Vous pouvez également utiliser les accesseurs pour valider ou convertir les données (par exemple, pour vérifier que les données correspondent à votre format préféré ou pour convertir une valeur en une unité particulière).
La syntaxe des propriétés peut varier, c'est pourquoi votre guide de style doit définir la manière de les formater. Les exemples suivants donnent des conseils sur la manière de conserver des propriétés cohérentes dans votre code.
Utiliser les propriétés à corps d'expression pour les propriétés à ligne unique, en lecture seule (=>) : Cette fonction renvoie le champ d'appui privé.
Tout le reste utilise la syntaxe des expressions { get ; set ; }: Si vous souhaitez simplement exposer une propriété publique sans spécifier de champ d'appui, utilisez la propriété propriété auto-implémentée.
Appliquer la syntaxe de l'expression pour les accesseurs set et get. N'oubliez pas de rendre le "setter" privé si vous ne voulez pas fournir un accès en écriture. Alignez la fermeture avec l'accolade d'ouverture pour les blocs de code multilignes.
La sérialisation des scripts est le processus automatique de transformation des structures de données ou des états d'objets dans un format que Unity peut stocker et reconstruire ultérieurement. Pour des raisons de performance, Unity gère la sérialisation différemment des autres environnements de programmation.
Les champs sérialisés apparaissent dans l'inspecteur, mais vous ne pouvez pas sérialiser les champs statiques, constants ou en lecture seule. Ils doivent être publics ou étiquetés avec l'attribut [SerializeField]. Unity ne sérialise que certains types de champs, il faut donc se référer à la documentation pour connaître l'ensemble des règles de sérialisation.
Respectez les règles de base suivantes lorsque vous travaillez avec des champs sérialisés :
Utilisez l'attribut [SerializeField]: L'attribut SerializeField peut fonctionner avec des variables privées ou protégées pour les faire apparaître dans l'inspecteur. Cela permet d'encapsuler les données mieux que de rendre la variable publique et d'empêcher un objet externe d'écraser ses valeurs.
Utilisez l'attribut Plage pour définir des valeurs minimales et maximales: L'attribut [Range(min, max)] est pratique si vous souhaitez limiter ce que l'utilisateur peut attribuer à un champ numérique. Il représente également le champ sous la forme d'un curseur dans l'inspecteur.
Regrouper les données dans des classes ou des structures sérialisables pour nettoyer l'inspecteur: Définir une classe ou une structure publique et la marquer avec l'attribut [Serializable]. Définissez des variables publiques pour chaque type que vous souhaitez exposer dans l'inspecteur.
Faire référence à cette classe sérialisable à partir d'une autre classe. Les variables résultantes apparaissent dans l'inspecteur sous forme d'unités repliables.
Il existe deux styles d'indentation courants en C# :
Le style Allman, également connu sous le nom de style BSD (de BSD Unix), place les accolades d'ouverture sur une nouvelle ligne.
Le style K&R, ou "one true brace style", maintient l'entretoise d'ouverture sur la même ligne que le collecteur précédent.
Il existe également des variantes de ces styles d'indentation. Les exemples de ce guide utilisent le style Allman des directives de conception du cadre Microsoft. Quel que soit le choix de l'équipe, veillez à ce que tout le monde respecte le même style d'indentation et d'accolade. Vous pouvez également essayer les conseils donnés dans les sections suivantes.
L'indentation est généralement de deux ou quatre espaces. Obtenez l'accord de tous les membres de votre équipe sur un paramètre des préférences de l'éditeur sans déclencher une guerre des onglets contre les espaces.
Dans Visual Studio pour Windows, allez dans Outils > Options > Éditeur de texte > C# > Onglets.
Dans Visual Studio pour Mac, accédez à Préférences > Code source > Code source C#. Sélectionnez le style de texte pour ajuster les paramètres.
Remarque: Visual Studio offre la possibilité de convertir les tabulations en espaces.
N'omettez pas les accolades, même pour les déclarations d'une seule ligne. Les accolades augmentent la cohérence, ce qui facilite la lecture et la maintenance de votre code. Dans cet exemple, les accolades séparent clairement l'action DoSomething de la boucle.
Si vous devez ajouter une ligne Debug ou exécuter DoSomethingElse plus tard, les accolades seront déjà en place. Le fait de conserver la clause sur une ligne distincte vous permet d'ajouter simplement un point d'arrêt.
Ne supprimez pas les accolades des déclarations multilignes imbriquées. La suppression des accolades dans ce cas n'entraînera pas d'erreur, mais sera probablement source de confusion. Appliquez des accolades pour plus de clarté, même si elles sont facultatives.
La mise en forme peut varier, il convient donc de documenter les préférences de votre équipe dans votre guide de style et de normaliser vos déclarations de basculement en conséquence.
Voici un exemple d'indentation des déclarations de cas.
Une chose aussi simple que l'espacement peut améliorer l'apparence de votre code à l'écran. Bien que les préférences personnelles en matière de formatage puissent varier, prenez en compte les suggestions ci-dessous pour améliorer la lisibilité.
Ajouter des espaces pour réduire la densité du code. L'espace blanc supplémentaire donne l'impression d'une séparation visuelle entre les parties d'une ligne.
Utilisez un seul espace après une virgule entre les arguments de la fonction.
N'ajoutez pas d'espace après les parenthèses et les arguments de la fonction.
N'utilisez pas d'espaces entre le nom d'une fonction et les parenthèses.
Dans la mesure du possible, évitez les espaces à l'intérieur des parenthèses.
Utilisez un seul espace avant les conditions de contrôle de flux et ajoutez un espace entre l'opérateur de comparaison de flux et les parenthèses.
Utilisez un seul espace avant et après les opérateurs de comparaison.
Veillez à ce que les lignes soient courtes et tenez compte des espaces blancs horizontaux. Décidez d'une largeur de ligne standard (80-120 caractères) et divisez une longue ligne en plus petites déclarations plutôt que de la laisser déborder.
Comme nous l'avons vu précédemment, essayez de respecter l'indentation et la hiérarchie. L'indentation de votre code peut en améliorer la lisibilité.
N'utilisez pas l'alignement des colonnes, sauf si cela est nécessaire pour la lisibilité. Bien que ce type d'espacement aligne les variables, il peut compliquer l'association du type et du nom.
L'alignement des colonnes peut toutefois s'avérer utile pour les expressions binaires ou les structures contenant beaucoup de données. Sachez simplement que cela peut vous donner plus de travail pour maintenir l'alignement des colonnes au fur et à mesure que vous ajoutez des éléments. Certains formateurs automatiques peuvent également modifier la partie de la colonne qui est alignée.
Vous pouvez également utiliser l'espacement vertical à votre avantage. Conservez les parties connexes du texte ensemble et utilisez les lignes vierges à votre avantage. Essayez d'organiser votre code de haut en bas de la manière suivante :
- Regrouper les méthodes dépendantes ou similaires : Le code doit être logique et cohérent. Gardez les méthodes qui font la même chose l'une à côté de l'autre, de sorte que quelqu'un qui lit votre logique n'ait pas à sauter dans le fichier.
- Utilisez les espaces verticaux pour séparer les différentes parties de votre classe : Par exemple, vous pouvez ajouter deux lignes vierges entre :
- Déclarations de variables et méthodes
- Classes et interfaces
- les blocs if-then-else (si cela aide à la lisibilité)
Limitez-les au minimum et, si possible, repérez-les dans votre guide de style.
Utiliser les régions dans votre code
La directive #region vous permet de réduire et de masquer des sections de code dans les fichiers C#, ce qui rend les fichiers volumineux plus faciles à gérer et à lire.
Cependant, si vous suivez les conseils généraux de ce guide, la taille de votre classe devrait être gérable et la directive #region superflue. Divisez votre code en classes plus petites au lieu de cacher des blocs de code derrière des régions. Vous serez moins enclin à ajouter une région si le fichier source est court.
Remarque : De nombreux développeurs considèrent les régions comme des odeurs de code ou des anti-modèles. Décidez en équipe de quel côté du débat vous vous situez.
Ne désespérez pas si ces règles de mise en forme vous semblent insurmontables. Les IDE modernes permettent de les mettre en place et de les appliquer efficacement. Vous pouvez créer un modèle de règles de formatage et convertir vos fichiers de projet en une seule fois.
Pour définir des règles de formatage pour l'éditeur de script :
- Dans Visual Studio pour Windows, accédez à Outils > Options, puis localisez Éditeur de texte > C# > Formatage du style de code.
- Les paramètres permettent de modifier les options Généralités, Indentation, Nouvelles lignes, Espacement et Enveloppe.
- Dans Visual Studio pour Mac, sélectionnez Visual Studio > Préférences, puis accédez à Code source > Formatage du code > Code source C#.
- Sélectionnez la politique en haut, puis allez dans l'onglet Style de texte. Dans l'onglet Format C#, réglez les paramètres Indentation, Nouvelles lignes, Espacement et Enroulement.
Pour forcer votre fichier de script à se conformer au guide de style :
- Dans Visual Studio pour Windows, allez dansÉdition > Avancé > Formater le document (Ctrl + K, accord de touches de raccourciCtrl + D ). Si vous souhaitez uniquement formater les espaces blancs et l'alignement des tabulations, vous pouvez également utiliser Run Code Cleanup (Ctrl + K, Ctrl + E) en bas de l'éditeur.
- Dans Visual Studio pour Mac, allez dans Édition > Formater le document ( touche de raccourci Ctrl + I).
Sous Windows, vous pouvez également partager les paramètres de l'éditeur à partir de Outils > Paramètres d'importation et d'exportation. Exportez un fichier contenant le formatage du code C# du guide de style, puis demandez à chaque membre de l'équipe d'importer ce fichier.
Visual Studio vous aide à respecter le guide de style. Le formatage devient alors aussi simple que l'utilisation d'un raccourci clavier.
Remarque: Vous pouvez configurer unEditorConfig (voir ci-dessus) au lieu d'importer et d'exporter les paramètres de Visual Studio. Cela facilite le partage de la mise en forme entre différents IDE. Il présente également l'avantage de fonctionner avec un contrôle de version. Voir les options de règles de style de code .NET pour plus d'informations.
Bien que cela ne soit pas spécifique au code propre, n'oubliez pas de consulter les 10 façons d'accélérer votre flux de travail de programmation dans Unity avec Visual Studio. Rappelez-vous qu'il est plus facile de formater et de remanier un code propre si vous appliquez ces conseils de productivité.
Plus de conseils sur le style de code
Pour en savoir plus sur les conventions de dénomination, cliquez ici ou consultez le livre électronique complet. Vous pouvez également consulter notre exemple de guide de style de code détaillé.