[pyar] [Consulta] Instrucción assert

Hugo Arregui hugo.arregui en gmail.com
Vie Jun 14 10:28:31 ART 2013


> Yo tenía entendido que si alguna precondición no se cumple entonces el
> contrato no obliga a nada. Por ende que no hace falta controlar las
> precondiciones.

Tal cual, por eso tu código no lo hace, por eso no usas excepciones.
En el caso de ejemplo que plantee, agregar un chequeo de precondición
no significa manejar el caso de fecha invalida, significa que cuando
explote todo vas a tener un mensaje mas lindo.

> En cuanto a las postcondiciones, ¿no es más claro mantener
> todo el código de chequeo fuera del código principal y usar alguna
> herramienta de testing? Estas están hechas específicamente para controlar
> postcondicones, me parece.

Bueno, a mi no me parece poco claro, supongo que es cuestión de
gustos. Al contrario, yo creo que hasta auto-documenta algunas cosas.

Por supuesto esto no reemplaza al testing, es una forma de testing
durante ejecución, tal vez lo que puedas aprender de las aserciones se
vuelque en un test mas tarde.

>> 3) Si nuestro sistema tiene q ser rápido, todos estos chequeos tan
>> útiles en desarrollo son facilmente deshabilitados: es decir, testing
>> en runtime durante desarrollo y cero overhead en prod.
>
>
> ¿Entonces por qué no usar alguna herramienta de testing?

Nunca dije que no se usasen :-).

>> 4) Nótese tb que no es equivalente el assert al raise Exception, dado
>> que una fecha de nacimiento invalida no es (en este caso), un flujo de
>> programa valido.
>
>
> Pero las excepciones son precisamente para eso. Para manejar casos que el
> programa no puede manejar.

No estoy de acuerdo, una excepción es un caso que manejas.


More information about the pyar mailing list