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. ¿Cómo limitar el tiempo de ejecución del programa cuando se utiliza un subproceso?
- 6. ¿Utiliza el diseño de teclado/teclado de manzana original (alemán) cuando programa en mac?
- 7. invariantes Especificación de los constructores de datos
- 8. Adición de invariantes a interfaces en Java
- 9. HttpContext.Current es nulo cuando se utiliza async
- 10. Controlar el rastreador cuando se utiliza Twinx
- 11. de error cuando se utiliza [openActiveSessionWithPublishPermissions FBSession: ..]
- 12. Symfony2 ScopeCrossingInjectionException cuando utiliza prototipo de alcance
- 13. ¿Utiliza constantes cuando trabaja con NSDictionary?
- 14. Perder alcance cuando se utiliza ng-incluir
- 15. referencia indefinida cuando se utiliza extern
- 16. ReplacableToken_ cuando se utiliza la transformación web.config?
- 17. consulta lenta cuando se utiliza ORDER BY
- 18. escape coma cuando se utiliza String.split
- 19. Android: transacciones SQLite cuando se utiliza ContentResolver
- 20. ActivationException cuando se utiliza en ToFactory Ninject
- 21. HTTPS para funcionar cuando se utiliza basicHttpBinding
- 22. programa externo de parada cuando el programa Java se detuvo
- 23. ¿Cómo determinar qué clases utiliza un programa Java?
- 24. Un programa C++ STL que utiliza el functor como predicado
- 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. ¿Qué sucede cuando ejecuta un programa?
- 29. C: Hacer algo cuando el programa sale
- 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