Conventions à respecter en C#
Bonjour,
je suis occupé d'apprendre le C# à partir d'un tutoriel de developpez. Cependant, certains points ne sont manifestement abordés par rapport aux bonne pratique et j'aimerais donc savoir quelles sont les bonne pratiques à respecter par rapport à ces points afin d'être facilement maintenable pour d'autres developpeurs C#.
Convention de nommage: Quelles sont les règles à respecter par rapport aux noms des méthodes, des classes, des attributs, des constantes, des propriétés des objets. En java, par exemple, les méthodes & attributs doivent être en lowerCamelCase, les classes en UpperCamelCase, et les constantes en UPPER_CASE, les packages en lowercase. A part pour les constantes, on utilise pas les "_", etc...
Conventions d'organisation des fichiers: Comment doit-on organiser les fichiers dans un projet: un dossier par namespace? un fichier .cs par classe ou plutot un fichier .cs par groupe de classe liées entre-elle? Les fichiers .cs doivent-ils avoir les mêmes noms que les classes à l'intérieur?
Convention sur les namespaces: Travaille-t-on avec des namespaces à plusieurs niveau (en java la recommandation est du style. com.company.module.subpackage.....) ou un seul niveau?
Gestion des dépendances et du build: quels outils sont à disposition pour s'assurer que le build soit reproductible sur n'importe quelle stations, quels outils sont à dispositions pour préciser les modules tiers dont dépendrait l'application? Peux-t-on compiler avec une ligne de commande?
Des règles gravées dans le marbre...
1) Il y a des petites règles qui, si elles sont respectées, peuvent vous faire gagner du temps. Je parle de règles qui sont "gravées", non pas dans le marbre, mais dans Visual Studio. Par exemple :
- Si vous avec un fichier nommé "Ma1ereClasse.cs", que ce fichier ne contient qu'une unique classe nommée "Ma1ereClasse" et que vous renommez ce fichier "Ma2emeClasse.cs", Visual Studio vous proposera de renommer la classe en "Ma2emeClasse" et de faire toutes les mises à jour en correspondance.
=> Donc mieux vaut n'avoir qu'une classe par Fichier.
- Si, dans une classe, une variable commence par une minuscule, (disons... "maVariable") et que vous faite un clique-droit dessus afin de l'encapsuler dans une propriété, Visual Studio vous proposera comme nom pour cette propriété "MaVariable" (Première lettre en majuscule), ce qui est très propre (à mon goût).
Si, au contraire, cette variable commence déjà par une majuscule, ("MaVariable"), Visual Studio vous proposera "MaVariable1", ce qui est bien moins propre (toujours à mon goût).
=> Donc, première lettre des variables en minuscule, première lettre des propriétés en majuscule.
2) Il y a également des règles observables dans le langage lui même :
- Tous les noms de fonctions commencent par une majuscule
- Tous les noms de classe commencent par une majuscule
- Tous les noms d'interfaces commencent par in "I" majuscule suivi d'une autre majuscule ("IDisposable" par exemple).
3) Plus tout ce que je n'ai pas encore remarqué...