2009-11-07 20 views
5

Estoy tomando un curso de programación intermedio que hace hincapié en el uso de invariantes. Nunca los había usado antes y parecen tomar más tiempo para crear. ¿La industria de ingeniería de software enfatiza el uso de invariantes?¿Utiliza invariantes cuando programa?

+0

no es una pregunta, votando para cerrar – cletus

+1

Es muy relevante imo. La palabra "Encuesta" puede ser engañosa, la pregunta probablemente debería haber tenido el título "¿Deberíamos usar invariantes?" o algo así. –

+0

¿Podría dar más detalles sobre lo que quiere decir al usarlos, p. por dar un ejemplo? Es posible que la gente use lo que estás diciendo sin darte cuenta de que eso es lo que quieres decir con "invariante". – Edmund

Respuesta

12

Depende de a quién le pregunte: yo uso invariantes simplemente porque hace la vida más fácil. El aprendizaje de invariantes es como aprender a escribir a ciegas. Cada vez que usa un invariante, sabe más sobre su código. Si inserta el invariante como un comentario en su ciclo, ayuda MUCHO al lector. Diría que el uso de invariantes hace que la creación y el mantenimiento del código fuente sean mucho más baratos, y te permite crear algoritmos mucho más sofisticados, que aún se pueden mantener.

Y a diferencia de OOP, nunca he experimentado que alguien pierda su tiempo al usar invariantes.

8

No pienso mucho en invariantes, no tanto como las condiciones previas/posteriores. Probablemente debería pensar más en invariantes, para ser honesto.

Una cosa a tener en cuenta es la inmutabilidad: si está utilizando un lenguaje OO pero hace que los tipos sean inmutables cuando puede, no necesita preocuparse tanto por las invariantes: si el estado es válido para empezar, permanecerá válido.

Parece que su curso puede estar sobre enfatizando un poco las invariantes ... pero depende de lo que esté haciendo. Son más apropiados en algunas situaciones que otros. Tal vez su profesor es simplemente un gran admirador de ellos con mucha experiencia en áreas donde son realmente útiles.

3

Una vez que sepa qué son las invariantes y lo que significan, tiende a cambiar la forma de razonar sobre el código. Quiero decir, muy rara vez escribo invariantes explícitos. Pero a menudo tengo una imagen en mi mente de la invariante en el código que estoy escribiendo. Esto te lleva a escribir un código que es mucho más simple. En la mayoría de los casos, terminas con un código que es tan simple que no necesitas escribir un comentario explícito sobre el invariante. Sin embargo, las personas que no saben sobre invariantes escriben código que es mucho más complicado :)

Cuestiones relacionadas