yo estaba pasando por una pregunta sobre el SO que era alrededor de new features of c# 4.0 y la respuesta de Jon Skeet tenían Código función de los contratos de C# 4.0 .. pero realmente no puede entender cuándo usarlos .. Cualquier sugerencia ...¿Cuándo se deben usar los contratos de código que viene con C# 4.0?
Respuesta
Siempre que sea posible. Por ejemplo, en cualquier lugar en que se usan una cláusula de guardia en el comienzo de un método como
public void Write(TextWriter tw, object o) {
if(tw == null) {
throw new ArgumentNullException("tw");
}
if(o == null) {
throw new ArgumentNullException("o");
}
tw.WriteLine(o.ToString());
}
se debe utilizar en lugar
public void Write(TextWriter tw, object o) {
Contract.Requires(tw != null);
Contract.Requires(o != null);
tw.WriteLine(o.ToString());
}
Lo que es bello sobre Contract
es que se hacen públicos y se pueden hacer parte de la documentación sin ningún trabajo adicional de su parte, ya que la cláusula de guardia no era pública y solo podía incluirse en la documentación con un poco de trabajo pesado. Por lo tanto, con Contract
puede expresar más claramente los requisitos y las promesas en su código.
lo que es realmente precioso, con contratos es que usted no tiene que cablear esas cadenas de nombres de argumento feas ...
if(tw == null) throw new ArgumentNullException("tw");
Bueno, no necesita CC para hacer este código más agradable. Podría escribir fácilmente algún método auxiliar a la 'Must.Be.NotNull (_ => someExpr);' Es una cuestión de preferencia personal que es "más agradable", por lo que esta no es la ventaja real de usar CC. – stakx
- 1. ¿Los contratos de código C# 4.0 realmente hacen algo?
- 2. ¿Cuándo debería usar expresiones lambda que viene con C# 3.0?
- 3. ¿Cuándo se deben usar referencias débiles?
- 4. Contratos de código, ¿los usará?
- 5. ¿Cuándo se deben usar tipos anulables en C#?
- 6. Cuándo se deben usar las entidades HTML
- 7. ¿Dónde comenzar con los contratos de código?
- 8. ¿Cómo uso los contratos de código en .NET 4.0 sin hacer que mi código se vea desordenado?
- 9. ¿Cómo hacer que los contratos de código funcionen con la deserialización de contratos de datos?
- 10. Contratos de código vs. Inicializadores de objetos (.net 4.0)
- 11. ¿Se pueden usar los contratos de código de Microsoft con un sitio web ASP.NET?
- 12. ¿Cuándo se deben usar <%# ... %> y <%= ... %>?
- 13. ¿Se deberían usar contratos de código para la seguridad?
- 14. ¿Qué modismos de C++ deben usar los programadores de C++?
- 15. ¿Cómo se configura Pex para respetar los contratos de código?
- 16. ¿Cuándo se deben usar "SqlDbType" y "size" al agregar los parámetros de SqlCommand?
- 17. cuando no se deben usar sprites CSS?
- 18. Cómo realizar pruebas unitarias con Contratos de código
- 19. Error en iteradores con contratos de código?
- 20. ¿Cuándo debería usar SnapsToDevicePixels en WPF 4.0?
- 21. ¿Los contratos de código realmente ayudan a las pruebas unitarias?
- 22. Contratos de Moq y Código
- 23. Cuándo usar Cygwin o MinGW para compilar el código C?
- 24. ¿Contratos de código para mono?
- 25. mejor ORM para usar con C# 4.0
- 26. Contratos de código y asincronía
- 27. Contratos de código, forall y enumerable personalizado
- 28. . Contratos de código .NET: ¿puede ser más básico que esto?
- 29. Contratos de código de prueba unitaria
- 30. Cuándo usar extern "C"?
Además de lo anterior, donde se utilizan los contratos para comprobar las condiciones previas, de manera similar que puede utilizarse para validar las condiciones posteriores, por ejemplo, después de la ejecución del cuerpo del método parcial/completo, afirmando si alguna variable/objeto está en el estado correcto. Además, los contratos también se pueden evaluar de forma estática (en tiempo de compilación). – VinayC
@VinayC: Sí, eso es lo que estaba aludiendo también con "promesas [...] más claramente expresas en su código". Gracias por elaborar para mí. – jason
+1 a los dos; No podría haberlo dicho mejor. – koenmetsu