Domanda

Gli strumenti e il software per sviluppatori in genere non forniscono suggerimenti per la soluzione nei messaggi di errore . Questo ha senso per i compilatori perché dovrebbero dire precisamente cosa è andato storto.

Esistono " lint " per fornire suggerimenti, ma AFAIK, pochi sviluppatori usano strumenti di lint regolarmente o addirittura affatto.

Esiste un ampio set di software orientato agli sviluppatori che farebbe bene ad avere una soluzione suggerita / e " parte ai messaggi di errore . Questa è una delle grandi funzionalità di IDE come Eclipse. Ma software come framework di applicazioni Web, librerie standard / popolari, ecc. Non dispongono di questa utile funzionalità.

È qualcosa che manca solo di un design user-friendly (uno può considerarlo non necessario, dato che Google è così bravo) o c'è una buona ragione per questo? Compilatori, framework, piattaforme che usi forniscono messaggi di errore con suggerimenti di soluzione, se nessuno, perché no?

È stato utile?

Soluzione

La cosa principale che voglio da un compilatore o da un errore di runtime è il contesto: dove è successo e da dove è stato chiamato quando non è riuscito.

Penso che la maggior parte dei compilatori e runtime moderni (Java, Ruby, Go) facciano un lavoro decente lì, con numeri di riga e tracce di stack che puoi trovare la maggior parte dei bug. Anche le opzioni Javascript stanno diventando buone, sicuramente batte il buon vecchio " alert () " approccio al debug.

Non è abbastanza giusto lasciare soluzioni suggerite agli IDE?

Ma concordo sul fatto di aver visto framework / librerie che erano molto scarsi con i messaggi di errore, e "NullPointerException alla riga 264" nel profondo di una libreria di terze parti in cui non hai il codice sorgente ti dice molto vicino a nulla.

Se questo è un problema, penso che sia principalmente limitato alle librerie di terze parti. La "buona ragione" è presumibilmente che è stato sviluppato in fretta nel tempo libero di qualcuno, e non hanno inserito messaggi di errore significativi molto in cima alla lista delle priorità.

Altri suggerimenti

Cosa vuoi vedere?

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

Voglio dire, non è compito degli autori di errori educarti. Preferisco semplici messaggi di errore che indicano l'esatto problema, quindi io stesso posso determinare esattamente cosa lo sta causando questa volta. Per me, questo certamente rientra nel dominio degli strumenti di terze parti; forse i compilatori potrebbero fornire loro un ampio contesto, per fare le loro analisi, ma non è qualcosa che troverei davvero prezioso.

È difficile presentare la soluzione a un errore . Ci sono così tante possibilità e, come sottolineato da @silky, alcune non possono essere diagnosticate.

Avvertimenti sono una bestia diversa. In molte situazioni i compilatori moderni usano questi per dire "Penso che intendevi X quando hai detto Y; ti consigliamo di verificarlo. "

Un linguaggio di programmazione ha l'opportunità di essere il massimo in termini di flessibilità in termini di interfaccia utente. Puoi fare in modo che il computer faccia tutto quello che vuoi. Il rovescio della medaglia è che se si digita un carattere errato, potrebbe non avere idea di quale asse sia stato commesso l'errore o dove.

I sistemi con minore flessibilità offrono maggiori opportunità per offrire soluzioni ai problemi. Se digiti (a b c) nel tuo compilatore Lisp e non sa cosa sia a, è così vicino a così tante righe di codice valide che non può esattamente suggerire una singola correzione. Se si scrive in modo errato " DIVISIONE IDENTIFICAZIONE " all'inizio del tuo programma COBOL, è relativamente facile per il compilatore individuare l'errore e aiutarti. La maggior parte delle altre lingue si trovano tra questi estremi.

I programmatori tendono a spostarsi, nel corso della loro carriera, da linguaggi meno potenti e più strutturati, in linguaggi più potenti e flessibili. (Almeno, questo è quello che ho visto accadere prima che Javascript diventasse un linguaggio per principianti così caldo.) Ciò significa che la loro disciplina migliora al punto in cui sono in grado di utilizzare strumenti che offrono potere a scapito di sapere cosa fare. Gli ambienti che ho usato che possono dirmi cosa riparare, tendono ad essere quelli che non mi piace usare.

Non è diverso da qualsiasi altra arte. Guarda musicisti o pittori o artisti marziali o attori o scrittori o chef o anche persone che imparano a parlare spagnolo: quando sono giovani e inesperti, vengono inseriti in un sistema in cui c'è molta struttura e se commettono un errore qualcuno può correggerli facilmente. Man mano che diventano più competenti, hanno bisogno e vogliono sempre meno supporto. Quando sono diventati esperti stessi, non hanno bisogno di alcun supporto, ma il rovescio della medaglia è che non puoi facilmente indicare ciò che è giusto o sbagliato. Se tuo figlio colora al di fuori delle linee, puoi spiegare il problema, ma se Picasso o Pollock fanno una brutta pennellata, cosa diresti? O se Philip Glass mette una nota fuori posto, o Bruce Lee trasforma il suo corpo troppo in un pugno? E chi vorrebbe lavorare in una forma d'arte così limitata che cose profane non sono possibili? I compilatori COBOL esistono ancora se qualcuno li vuole davvero, ma molte più persone pagano soldi per dipinti terribili che magistrali stampe per colore.

Più direttamente, c'è un sito ErrorHelp (nee bug.gd), che ti consente di digitare un messaggio di errore e ottenere un risultato, ed è più vecchio di SO ma nessuno lo usa . Ho provato. A meno che non ci si trovi in ??un contesto in cui esiste una sola risposta possibile, un semplice problema riscontrato nel dizionario delle soluzioni suggerite non funziona e pertanto rappresenta un fallimento assoluto in qualsiasi campo creativo.

La maggior parte degli IDE ha i propri compilatori. Ciò consente loro di eseguire compilazioni parziali, refactoring del codice e molti altri trucchi. Trovo i messaggi di errore e i suggerimenti abbastanza utili. Solo perché il compilatore non è invocato dalla riga di comando, non significa che non sia un compilatore.

alt text http://www.theeggeadventure.com /wikimedia/images/1/1f/Eclipse-error.png

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top