101 votes

Conventions d'appellation pour les fichiers de classes partielles

Je génère la majeure partie de mon code d'échafaudage ASP.NET MVC. Tous les fichiers générés sont des classes partielles qui utilisent des conventions de nommage standard. Par exemple, le fichier de mon contrôleur d'employés s'appelle EmployeeController.cs. Si je souhaite étendre le contrôleur EmployeeController avec une logique personnalisée, non générée, je crée un deuxième fichier de classe partielle appelé EmployeeControllerCustom.cs. Je sépare la logique personnalisée et la logique générée dans deux fichiers différents afin que la prochaine fois que je génère le contrôleur d'employés, mes modifications personnalisées ne soient pas écrasées. L'ajout du suffixe "Custom" au nom du fichier me semble raisonnable, mais existe-t-il une convention de dénomination des fichiers de classe partielle plus établie que je devrais suivre ?

0 votes

100ème like : ))

164voto

Marc Gravell Points 482669

J'utilise . séparation - par exemple EmployeeController.SomeSpecialBehaviour.cs . Je le relie également à l'arborescence du projet via "dependentUpon" ou autre dans le csproj, de sorte qu'il s'imbrique sous le fichier (dans l'explorateur de solutions) de manière nette. Il faut cependant le faire à la main (éditer le csproj) ou avec un addin ; par exemple :

<Compile Include="Subfolder/Program.cs" />
<Compile Include="Subfolder/Program.Foo.cs">
  <DependentUpon>Program.cs</DependentUpon> <!-- Note that I do not reference the subfolder here -->
</Compile>

apparaît comme :

  • Sous-dossier
    • Program.cs
      • Program.Foo.cs

5 votes

La suggestion DependentUpon est vraiment sympa et fonctionne très bien. Merci d'en avoir pris note. Si je lis bien, vous n'utilisez pas simplement un suffixe standard comme "Custom". Votre suffixe exprime toujours l'intention de la fonctionnalité du fichier de classe partielle. Par ailleurs, y a-t-il une raison pour laquelle vous utilisez la séparation . par opposition à la casse ? Le . apporte-t-il quelque chose de plus qu'une meilleure lisibilité ? Je vous remercie.

11 votes

Correct - le nom du fichier indique l'intention du code en cette partie . Ainsi, si j'implémente une interface exotique (et que je garde le code séparé), cela pourrait être SomeType.ICustomTypeDescriptor.cs . Les . (IMO) sépare les deux choses : le type réel ( SomeType ) et l'intention ICustomTypeDescriptor - sont déjà entièrement casés ; en outre, ils s'accordent parfaitement avec des éléments tels que SomeForm.Designer.cs ;-p

0 votes

Parfait. Merci pour cet éclairage supplémentaire. Si je pouvais faire plus que voter pour votre réponse et la marquer comme correcte, je le ferais.

17voto

Nameless One Points 493

MISE A JOUR / CLAUSE DE NON-RESPONSABILITE : En 2018, quelqu'un a modifié la réponse de Marc Gravell♦ (celle acceptée ci-dessus) pour inclure un sous-dossier dans son exemple. Et comment gérer le cas d'avoir un sous-dossier est le point principal de la réponse de Marc Gravell☦. este répondre.

Sans cet avertissement, vous ne comprendriez probablement pas pourquoi cette réponse existe et pourquoi elle a autant de votes.


Pour compléter la réponse de Marc Gravell♦, j'ai eu une situation avec des fichiers dans un sous-dossier et l'option DependentUpon étant ignoré. En bref, dans un tel cas, my xml devait être :

<Compile Include="foo\bar.cs" />
<Compile Include="foo\bar.baz.cs">
    <DependentUpon>bar.cs</DependentUpon>  <!-- Note that I do not reference the subfolder here -->
</Compile>

J'espère que cela aidera quelqu'un :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X