viernes, 22 de mayo de 2015

Contratos en C#

Leyendo sobre C# en infoQ parece ser que quieren agregar contratos, pero que serían los  contratos? En un momento de mi vida yo escribí sobre contratos, escribí algo como esto:

"Eiffel es el lenguaje pionero en el diseño por contrato. Diseño por contrato es un concepto basado en la calidad del software.

Diseño por contrato es una metafora de como los objetos deben colaborar entre ellos. La metafora se puede explicar como un cliente que debe contratar un servicio; lo cual lo hace por medio de un contrato.

El proveedor debe proporcionar un producto determinado o servicio y tiene derecho a esperar hasta que el cliente pague.

El cliente debe pagar y tiene derecho a obtener el producto o servicio.
Ambas partes deben cumplir con ciertas obligaciones, tales como las leyes y reglamentos, aplicables a todos los contratos."

Volviendo a C# han decidido implementar un mecanismo de programación basada en contratos de la siguiente manera:

public int Insert(T item, int index)
    requires index >= 0 && index <= Count
    ensures return >= 0 && return < Count
{ … }

Lo que esta haciendo acá es asegurarse de que index sea mayor a 0 y menor a count.

Dejo link: http://www.infoq.com/news/2015/05/CSharp-7-contract