3

J'utilise les classes Contrats de code dans l'espace de noms System.Diagnostics.Contracts pour définir des contrats pour mes objets et je me demande comment d'autres nomment leurs classes de contrat lorsque le contrat est défini sur une base. interface. Permettez-moi d'illustrer par un petit exemple:Conventions de dénomination pour les classes de Contrats de code des types d'interface

[ContractClass(typeof(AnimalContract))] 
public interface IAnimal 
{ 
    // definition here 
} 

[ContractClassFor(typeof(IAnimal))] 
public class AnimalContract : IAnimal 
{ 
    // explicit interface implementation here 
} 

Dans cet exemple, je l'ai appelé la classe contrat AnimalContract, mais est-il un meilleur nom? Parce que le contrat est défini par rapport à une interface, je veux presque nommer la classe IAnimalContract pour illustrer qu'il s'agit d'un contrat pour l'interface IAnimal. De cette façon, lorsque je vois les deux éléments dans l'Explorateur de solutions, ils sont visuellement «attachés», ce qui aide à garder les choses belles et propres dans ma tête. Bien sûr, le contrat lui-même n'est pas une interface, donc le nommer de cette façon me semble mauvais.

Comment les gars (et les filles) nommez-vous vos classes de contrat dans ces cas? Y a-t-il une convention généralement acceptée?

Répondre

3

Le Code Contracts User Manual utilise à la fois le format IAnimalContract (voir section 2.8) et le format ContractForIAnimal (voir section 4.1). Par conséquent, il n'y a aucun style spécifique que l'équipe de contrats de code vous-même souhaite que vous suiviez. Cependant, je vois le style IAnimalContract utilisé le plus souvent, et suivre une convention de nommage commune est certainement important. De plus, je pense qu'il est plus utile de pouvoir trouver rapidement la classe de contrat en recherchant le nom du type d'interface que de simplement trouver toutes les classes de contrat ensemble.

Personnellement, je garde ma classe de contrat dans le même fichier que l'interface, ce que je fais rarement autrement. Je pense que les contrats font partie de l'interface et devraient être conservés le plus près possible.

1

Personnellement, j'ai l'habitude de les nommer dans le mode 'IAnimalContract'. Mais votre point de vue, je dirais les nommer «ContractForIAnimal», et les garder dans un dossier nommé «Contrats».

De cette façon, vous pouvez facilement trouver vos contrats, et vous ne serez pas avoir cette mauvaise odeur de vos conventions de nommage =)