Pregunta

Las herramientas y el software para desarrolladores generalmente no proporcionan sugerencias de solución en mensajes de error . Esto tiene sentido para los compiladores porque se supone que deben decir precisamente qué salió mal.

Hay herramientas " lint " para proporcionar sugerencias, pero AFAIK, pocos desarrolladores usan herramientas lint regularmente o incluso en absoluto.

Existe un gran conjunto de software orientado al desarrollador que haría bien en tener una " soluciones sugeridas " parte a los mensajes de error . Esta es una de las grandes características que tienen los IDE como Eclipse. Pero el software como marcos de aplicaciones web, bibliotecas estándar / populares, etc. no tienen esta característica útil.

¿Es esto algo que simplemente carece de un diseño fácil de usar (uno puede considerar esto innecesario, dado que Google es tan bueno) o hay una buena razón para ello? ¿Los compiladores, marcos de trabajo, plataformas que utiliza proporcionan mensajes de error con sugerencias de soluciones, si no hay ninguna, por qué no?

¿Fue útil?

Solución

Lo principal que quiero de un compilador o error de tiempo de ejecución es el contexto: dónde sucedió y desde dónde se llamó cuando falló.

Creo que la mayoría de los compiladores y tiempos de ejecución modernos (Java, Ruby, Go) hacen un trabajo decente allí, con números de línea y trazas de pila, puedes encontrar la mayoría de los errores. Incluso si las opciones de JavaScript se vuelven buenas, ciertamente supera la buena " alert () " enfoque para la depuración.

¿No es lo suficientemente justo como para dejar las soluciones sugeridas a los IDE?

Pero estoy de acuerdo en que he visto marcos / bibliotecas que estaban muy dispersos con mensajes de error, y " NullPointerException en la línea 264 " En el fondo de una biblioteca de terceros donde no tiene el código fuente, casi no hay información.

Si este es un problema, creo que está restringido principalmente a bibliotecas de terceros. La "buena razón" es presumiblemente que se desarrolló con prisa en el tiempo libre de alguien, y no pusieron mensajes de error significativos muy altos en la lista de prioridades.

Otros consejos

¿Qué quieres ver?

Error: Null Pointer Exception (suggested solution: Set the object to something).

Quiero decir, no es el trabajo de los escritores de errores educarlo. Prefiero los mensajes de error simples que apuntan al problema exacto, por lo que yo mismo puedo determinar qué lo está causando esta vez. Para mí, esto ciertamente está en el dominio de las herramientas de terceros; tal vez los compiladores podrían proporcionarles un contexto extenso para hacer su análisis, pero no es algo que realmente encuentre valioso.

Es difícil encontrar la solución a un error . Hay tantas posibilidades y, como señaló @silky, algunas simplemente no pueden ser diagnosticadas.

Advertencias son una bestia diferente. En muchas situaciones, los compiladores modernos usan estos para decir "Creo que quiso decir X cuando dijo Y; es posible que desee comprobar eso. "

Un lenguaje de programación tiene la oportunidad de ser lo último en flexibilidad en términos de interfaz de usuario. Puedes hacer que la computadora haga lo que quieras. La otra cara de la moneda es que si escribe tanto como un carácter incorrecto, es posible que no tenga idea de en qué eje se cometió su error o dónde.

Los sistemas con menos flexibilidad ofrecen más oportunidades para ofrecer soluciones a los problemas. Si escribe (a b c) en su compilador Lisp y no sabe qué es a, está tan cerca de tantas líneas de código válidas que no puede sugerir exactamente una sola solución. Si escribe incorrectamente la " IDENTIFICACIÓN DIVISIÓN " al inicio de su programa COBOL, es relativamente fácil para el compilador detectar el error y ayudarlo. La mayoría de los otros idiomas se encuentran entre estos extremos.

Los programadores tienden a moverse, a lo largo de sus carreras, de lenguajes menos poderosos y más estructurados, a lenguajes más poderosos y flexibles. (Al menos, eso es lo que vi antes de que Javascript se convirtiera en un lenguaje tan nuevo para los principiantes). Esto significa que su disciplina mejora hasta el punto en que pueden usar herramientas que ofrecen poder a expensas de que se les diga qué hacer. Los entornos que he usado que me pueden decir qué solucionar, tienden a ser los que no me gustan.

No es diferente de cualquier otro arte. Mire a músicos, pintores, artistas marciales, actores, escritores, chefs o incluso personas que aprenden a hablar español: cuando son jóvenes e inexpertos, se les instala en un sistema donde hay mucha estructura y si cometen un error. alguien puede corregirlos fácilmente. A medida que se vuelven más capacitados, necesitan y quieren cada vez menos apoyo. Cuando ellos mismos se han convertido en expertos, no necesitan ningún tipo de apoyo, pero la otra cara de la moneda es que no se puede señalar fácilmente lo que está bien o mal. Si tu hijo colorea fuera de las líneas, puedes explicar el problema, pero si Picasso o Pollock hacen una mala pincelada, ¿qué dirías? ¿O si Philip Glass pone una nota fuera de lugar, o Bruce Lee convierte su cuerpo en un puñetazo? ¿Y quién querría trabajar en una forma de arte tan limitada que las cosas profanas no son posibles? Los compiladores de COBOL todavía existen si alguien realmente los quiere, pero muchas más personas pagan dinero por horribles pinturas que las impresiones magistrales de color por número.

Más directamente, hay un sitio, ErrorHelp (nee bug.gd), que le permite escribir un mensaje de error y obtenga un resultado, y es más antiguo que SO pero nadie lo usa . He intentado. A menos que se encuentre en un contexto en el que solo haya una respuesta posible, un problema simple encontrado en el diccionario de soluciones sugeridas no funciona y, por lo tanto, es un fracaso total en cualquier campo creativo.

La mayoría de los IDE tienen sus propios compiladores. Esto les permite hacer una compilación parcial, refactorizaciones de código y muchos otros trucos. Encuentro los mensajes de error y sugerencias muy útiles. El hecho de que el compilador no se invoque en la línea de comandos, no significa que no sea un compilador.

texto alternativo http://www.theeggeadventure.com /wikimedia/images/1/1f/Eclipse-error.png

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top