2011-02-15 17 views
8

Empecé a usar Contratos de código y he descubierto que dificulta detectar inmediatamente las 'agallas' de un método.¿Cómo uso los contratos de código en .NET 4.0 sin hacer que mi código se vea desordenado?

tomar esto (muy simple) ejemplo:

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); 
} 

Ahora estoy tentado a poner los contratos en una región, de modo que puedan ser escondidos, pero luego me preocupa que estoy perdiendo una buena ventaja de poder mirar el método y ver lo que espera.

¿Qué haces para mantener tus contratos "ordenados"? ¿O solo estoy siendo demasiado quisquilloso?

+0

posible duplicado de: "¿Cómo agrego nuevas funciones a mi aplicación sin hacer que mi código se vea desordenado?" –

+3

AFAICT, esto no es nuevo ni específico para los Contratos de Código: el método era verificar los parámetros incluso antes de CC, ¿no es así? No tengo ninguna solución para esto aparte de un poco de espacio en blanco ... – Mormegil

+0

Estoy de acuerdo con Mormegil. Antes de CC, se suponía que debías escribir "if (condition) throw new argumentexception". – koenmetsu

Respuesta

6

Eche un vistazo a los atributos ContractClass y ContractClassFor. Esto le permite escribir clases con los contratos de código en ensamblajes separados. Esto le permite tener los contratos disponibles para el trabajo dev, no el desorden de su código y también significa que usted no tiene que implementar los contratos con el código en vivo:

Contract Class Attribute

Contract Class For Attribute

+1

Cierto, pero eso no funcionará en el método estático que usó en su ejemplo. – koenmetsu

+1

Además: la implementación de los contratos depende de la configuración que use en el Panel de propiedades de Contratos de código. Simplemente no desplegar los Contratos sin la configuración correcta solo te dará problemas. – koenmetsu

+0

Supongo que el desarrollador leerá la documentación sobre cómo usar la función. :) –

Cuestiones relacionadas