¿Cómo se aprende a resolver problemas de código?

Me sorprende que esto no haya sido respondido antes. ¿Esto es para su propio código o código que usted heredó?

Código que escribió: Pretenda que regresó a principios de la década de los 70, donde escribió el código en las tarjetas Hollerith, las entregó, su instructor agregó un juego de tarjetas de entrada y se ejecutó el mazo. Luego recuperó la salida y no pudo volver a enviar la plataforma durante 24 horas. Eso fue muy divertido, pero esa es otra historia. Miras los resultados. Con suerte, su programa se compiló correctamente y al menos comenzó a ejecutarse. Si no se compiló, revisa el código con mucho cuidado. Corrija la línea donde dejó de compilar y pase por cada línea después de eso (y solo como precaución antes de eso) y asegúrese de que cada línea no tenga errores de sintaxis y haga exactamente lo que desea que haga. Si los datos se manejaron correctamente y recibió la respuesta esperada, es posible que haya terminado. Si hubo errores en los cálculos o si el código hizo un error de salida, vea si puede ver cuáles fueron los datos (en este caso, siempre es bueno imprimir los datos si pasan algunas pruebas simples. Siempre verifique una tarjeta de entrada en blanco o faltante, nunca salga por error. Si la prueba se ejecuta pasando argumentos al programa principal, verifique que no haya datos, verifique que no haya un puntero NULO, verifique que haya un parámetro fuera de rango, verifique que haya una entrada de 0 si ese parámetro se va a usar como un divisor. Si el instructor le dice cuál debe ser la salida esperada, verifique que su código esté produciendo la respuesta correcta. He visto a algunos estudiantes falsificar su código para producir solo el código respuesta correcta, pero la mayoría de los instructores ejecutan el programa activado con una entrada alternativa, así que asegúrese de estar calculando las respuestas correctas.

Código que heredó: ¿Qué especificaciones están disponibles para el código? ¿Está el código documentado internamente? ¿Hay algún algoritmo que sea muy complejo? ¿Existen pruebas automatizadas o documentación para las pruebas manuales? Revise las pruebas, asegúrese de que todos los casos de esquina estén cubiertos. Por ejemplo, la función string () de la biblioteca de plantillas de C ++ saldría por error cuando se pasara un puntero NULL en lugar de una cadena terminada en “0”. Conozca el código. A veces es posible que pueda implementar un algoritmo más simple que haga lo mismo que el algoritmo original. Los algoritmos más cortos, cuando se implementan correctamente, reducirán tremendamente los problemas. Ahora siga todos los pasos enumerados anteriormente para resolver problemas con su propio código. Si se encontró un problema, asegúrese de agregar una comprobación a las pruebas automatizadas para asegurarse de que se solucionó este problema.

Mejor código de resolución de problemas para usted.

No sé de otros, pero para mí, solo se trata de dominar la pila que estás usando y la experiencia general con la codificación en sí misma.

Una de las cosas que me di cuenta es que la mayoría de las veces es rara la pila (el idioma, los paquetes, la configuración, etc.) que causó el error, pero una parte del código que escribiste que se ha enfrentado con la arquitectura de la pila. Sabiendo esto, solo necesita encontrar el trozo de código que causó el problema y luego practique conocer los errores clave y leer el seguimiento de pila proporcionado.

Muchos de los principiantes suelen ser rechazados por una página de error. Un muro de texto asusta a mucha gente, pero la mayoría de la información proporcionada es irrelevante. La mayoría de las veces, debe analizar esa página de error por algo que haya escrito o escrito para causar un error y luego averiguar por qué ese fragmento de código causó un error. Es posible que deba retroceder un par de pasos para encontrar la raíz del problema. Por ejemplo, la línea que causó un error puede ser que intentó acceder a un objeto nulo, por lo que la raíz del error ocurrió antes de esa línea. ¿Qué causó que el objeto fuera nulo, etc.?

Todo el mundo tiene problemas para disparar el código como desarrollador (rara vez se escribe el código la primera vez) y la resolución de problemas es una habilidad que se desarrolla con el tiempo. Al igual que con cualquier buena caja de herramientas, necesita construir las herramientas a lo largo del tiempo, así que tómese su tiempo y encuentre los mejores métodos que funcionen para usted. ¡No tenga miedo de preguntar a otros sobre cómo depuran su código también!

Aprendes a resolver problemas de código de la misma manera que juegas en el Carnegie Hall: practica. Cuanto más escribas los programas, mejor lo haces. (Y cuantos más errores cometa y tenga que corregir, de modo que cuando vea que el mismo problema ocurre en el código de otra persona, probablemente se deba a la misma causa).

No hay manera de ir a la escuela para tomar un curso de “solución de problemas de códigos”, o conseguir un trabajo como “solucionador de problemas de códigos de aprendices”, obtener un trabajo como desarrollador de programas, escribir muchos programas y ser bueno en la resolución de problemas.