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?
Respuesta
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.
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.
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 :)
- 1. comprobando invariantes en C++
- 2. Tubería de un programa que utiliza WriteConsole
- 3. ClassCastException cuando se utiliza LinearLayout.LayoutParams
- 4. error cuando se utiliza mutex
- 5. ¿Utiliza el diseño de teclado/teclado de manzana original (alemán) cuando programa en mac?
- 6. ¿Cómo limitar el tiempo de ejecución del programa cuando se utiliza un subproceso?
- 7. invariantes Especificación de los constructores de datos
- 8. Adición de invariantes a interfaces en Java
- 9. Controlar el rastreador cuando se utiliza Twinx
- 10. Android: transacciones SQLite cuando se utiliza ContentResolver
- 11. ReplacableToken_ cuando se utiliza la transformación web.config?
- 12. HTTPS para funcionar cuando se utiliza basicHttpBinding
- 13. Symfony2 ScopeCrossingInjectionException cuando utiliza prototipo de alcance
- 14. de error cuando se utiliza [openActiveSessionWithPublishPermissions FBSession: ..]
- 15. Perder alcance cuando se utiliza ng-incluir
- 16. consulta lenta cuando se utiliza ORDER BY
- 17. HttpContext.Current es nulo cuando se utiliza async
- 18. ¿Utiliza constantes cuando trabaja con NSDictionary?
- 19. escape coma cuando se utiliza String.split
- 20. referencia indefinida cuando se utiliza extern
- 21. ActivationException cuando se utiliza en ToFactory Ninject
- 22. programa externo de parada cuando el programa Java se detuvo
- 23. Un programa C++ STL que utiliza el functor como predicado
- 24. ¿Cómo determinar qué clases utiliza un programa Java?
- 25. cómo pasar parámetros de una función cuando se utiliza timeit.Timer()
- 26. invariantes de bucle (Específicamente ch.3 de "C++ acelerada")
- 27. Cómo comprender "¿La variable no participa en invariantes con otras variables de estado cuando se usa palabra clave volátil?
- 28. C: Hacer algo cuando el programa sale
- 29. ¿Qué sucede cuando ejecuta un programa?
- 30. ¿Un programa C++ libera automáticamente la memoria cuando se bloquea?
no es una pregunta, votando para cerrar – cletus
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í. –
¿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