Hasta ahora, todas las respuestas se han ocupado de lenguajes modernos, donde la ejecución del rastreo se complica rápidamente. Si comenzó a programar hace casi 50 años, siempre trazó su código manualmente … antes de perforarlo en tarjetas de cartón de 80 columnas.
Para ser más exactos, desarrolló su código sin usar una computadora. Hubo formularios de diseño, formularios de codificación y diagramas de flujo, todos completados a mano y luego “revisados en el escritorio” para verificar su precisión antes de perforar tarjetas (o hacer que se perforen), según sus formularios de codificación.
Hoy en día, habré roto lo que sea que esté trabajando en pedazos … con puntos de entrada bien definidos y una o más salidas bien definidas. Obviamente, pero aún a veces se pasa por alto, es el hecho de que una llamada a función / método que siempre regresa no es una salida. A menos que sea muy simple, o que ya haya sido probado y documentado, tales funciones generalmente se convierten en otra pieza del rompecabezas. La verdadera diversión es tratar con funciones / métodos que a veces regresan, pero no siempre.
- ¿Alguien puede explicar la solución a SPOJ.com - Problema M3TILE?
- ¿Cuáles son los 5 mejores algoritmos esenciales (excepto la clasificación) que todo programador debe saber?
- ¿Por qué la recursión me causa tantos problemas?
- Me da miedo mirar las preguntas en GeekForGeeks, ¿cómo superar este miedo?
- ¿Cuál es la estructura de algoritmo / datos utilizada por Lucene para calcular el término frecuencia de los documentos?
Bien definido significa que los datos, tanto entrantes como salientes, y el estado del sistema están bien documentados en términos de lo que se espera. Esa parte puede ser, y a menudo sigue siendo, manual … o al menos mental. Las pruebas, donde buscamos eliminar datos indeseables o cambios de estado, es mejor dejarlas en la computadora.