2011-02-15 1 views
8

J'ai commencé à utiliser les contrats de code et j'ai trouvé qu'il est difficile de repérer immédiatement les «tripes» d'une méthode.Comment utiliser les contrats de code dans .NET 4.0 sans faire paraître mon code encombré?

Prenez ce (très simple) Exemple:

public static void UserAddNew(string domain, string username, string displayName) 
{ 
    Contract.Assert(!string.IsNullOrWhiteSpace(domain)); 
    Contract.Assert(!string.IsNullOrWhiteSpace(username)); 
    Contract.Assert(!string.IsNullOrWhiteSpace(displayName)); 

    LinqDal.User.UserAddNew(domain, username, displayName); 
} 

Maintenant, je suis tenté de mettre les contrats dans une région, afin qu'ils puissent être cachés, mais je crains que je suis perdre un bel avantage de pouvoir regarder la méthode et voir ce qu'elle attend.

Que faites-vous pour garder vos contrats «rangés»? Ou suis-je juste trop difficile?

+0

double possible de: "Comment ajouter de nouvelles fonctionnalités à mon application sans que mon code soit encombré?" –

+3

AFAICT, ceci n'est pas nouveau ou spécifique aux Contrats de Code - la méthode vérifiait les paramètres avant même le CC, n'est-ce pas? Je n'ai pas de solution à cela à part un peu d'espace ... – Mormegil

+0

Je suis d'accord avec Mormegil. Avant CC, vous étiez censé écrire "if (condition) throw new argumentexception". – koenmetsu

Répondre

6

Jetez un coup d'œil aux attributs ContractClass et ContractClassFor. Cela vous permet d'écrire des classes avec les contrats de code dans des assemblages séparés. Cela vous permet d'avoir les contrats disponibles pour les travaux de dev, ne pas encombrer votre code et signifie également que vous ne devez pas déployer les contrats avec le code en direct:

Contract Class Attribute

Contract Class For Attribute

+1

Vrai, mais cela ne fonctionnera pas sur la méthode statique qu'il a utilisée dans son exemple. – koenmetsu

+1

En outre: le déploiement des contrats dépend des paramètres que vous utilisez dans le volet des propriétés Contrats de code. Juste ne pas déployer les contrats sans les bons paramètres ne vous donnera que des problèmes. – koenmetsu

+0

Je suppose que le développeur lirait la documentation sur la façon d'utiliser la fonctionnalité. :) –

Questions connexes