O que todo programador iniciante precisa saber para evoluir muito mais rápido!
É sério! Se você seguir esse conselho você evoluirá muito mais rápido, pode ter certeza!
Qual é o segredo?
É simples, aprenda a ler erros, parece ser óbvio para alguns, porém é muito importante você se aperfeiçoar nessa prática, ela fará você ficar muito mais eficiente.
Darei alguns exemplos para você entender o que eu estou querendo te dizer, considere o seguinte código:
void main() {
int x = 0;
int y = 9;
String result = x + y;
}
Estamos usando o Dart como exemplo, esse código está no DartPad, uma das coisas boas do Dart é a facilidade de ver os erros antes da execução, mas isso serve para qualquer linguagem, afinal de contas o foco é ler as mensagens que aparece para você.
Ao escrever esse código, logo aparecerá a mensagem no canto inferior direito:
info
line 5 • The value of the local variable 'result' isn't used. (view docs)
Try removing the variable or using it.
error
line 5 • A value of type 'int' can't be assigned to a variable of type 'String'. (view docs)
Try changing the type of the variable, or casting the right-hand type to 'String'.
Note que temos um "info" e um "error", eu poderia ignorar e começar a chorar sem saber o que fazer, ou eu poderia tirar uma foto e mandar nos grupos perguntando o que está de errado no meu código.
Se você fica sem saber o que fazer quando o seu código não funciona, então continue comigo!
Entendendo as mensagens
Eu acredito que provavelmente você recebe mensagens parecidas dependendo da linguagem que você utiliza, nesse caso nós não precisamos executar o código, nós somos impedidos antes disso, graças ao analyzer do Dart, mas mesmo que você tenha que executar para ver o erro, é importante você ler e saber pegar o necessário para tentar corrigir o problema.
Resolvendo o info
info
line 5 • The value of the local variable 'result' isn't used. (view docs)
Try removing the variable or using it.
Veja que ele apontou "line 5", já temos uma referência de onde está o problema, logo depois temos uma mensagem, basta lermos para sabermos o que fazer; Ahh mas eu não sei inglês, use o Google Tradutor enquanto você ainda não manja dos inglês.
Vamos jogar essa "info" no Google Tradutor e ver o que ele traduz para nós:
linha 5 • O valor da variável local 'result' não é usado. (ver documentos)
Tente remover a variável ou usá-la.
Se você não sabe o que fazer fica complicado, porém vamos lá que até o final você saberá.
Vejamos nosso código novamente:
void main() {
int x = 0;
int y = 9;
String result = x + y;
}
Perceba que realmente não estamos utilizando a variável "result" em nenhum lugar, podemos resolver o problema usando ela ou removendo, nesse caso vamos colocar um código a mais para que a mensagem de "info" pare de aparecer.
void main() {
int x = 0;
int y = 9;
String result = x + y;
print(result);
}
Agora o "info" desaparece, porém é importante saber que o "info" não impede a execução do programa, o que impede ele é o "error", então você pode até ignora os "info".
Mas o "error" ainda continua.
Resolvendo o error
error
line 5 • A value of type 'int' can't be assigned to a variable of type 'String'. (view docs)
Try changing the type of the variable, or casting the right-hand type to 'String'.
Temos a mesma referência, na linha 5.
Vamos seguir a mesma coisa e colocar a mensagem no Google Tradutor, teremos o seguinte resultado:
Um valor do tipo 'int' não pode ser atribuído a uma variável do tipo 'String'. (ver documentos)
Tente alterar o tipo da variável ou converter o tipo da mão direita para 'String'.
Percebe o qual simples é resolver o problema ?
Eu criei duas variáveis ( x e y ) como inteiros, porém no result eu quis uma String do resultado da soma, é óbvio que se eu somar dois inteiros, terei um inteiro como resposta.
Então temos duas soluções, ou podemos mudar o tipo do result para int, ou converter o resultado para String, veja como ficaria:
Mudando a tipagem:
void main() {
int x = 0;
int y = 9;
int result = x + y;
print(result);
}
Convertendo o resultado:
void main() {
int x = 0;
int y = 9;
String result = (x + y).toString();
print(result);
}
Das duas formas é possível resolver o problema, você pode escolher a forma que mais faça sentido para você, agora entenda que estamos usando a linguagem Dart como exemplo, isso não significa que você não pode fazer o mesmo com outras linguagens.
Ponto Super Importante
Infelizmente nem todas as linguagens dará erros a você dá mesma forma que o Dart faz, talvez dependendo da linguagem que você esteja utilizando, venha um monte de coisa sem sentido algum aparentemente.
De qualquer forma é importante que você faça antes de qualquer coisa procure entender o que você fez, tente executar o código na sua cabeça e descreva o que está acontecendo detalhe por detalhe, por exemplo:
void main() {
int x = 0;
int y = 9;
String result = (x + y).toString();
print(result);
}
Primeira coisa que eu tenho é uma função main que retornada nada, quando ela for chamada a primeira coisa que deve acontecer é uma declação e atribuição de variável, no caso uma variável do tipo int chamada de x recebe o valor 0 que também é um int, no final coloco um ; pois é necessário, depois faço o mesmo com outra variável do tipo int, chamada y e que recebe 9 que também é um inteiro, no final o ; pois é importante, depois eu declaro uma variável do tipo String, chamada result e logo atribuo a ela o resultado de uma operação de soma, eu pego a variável x e somo mais y, depois disso eu preciso converter para String pois o resultado da soma de dois inteiros é outro inteiro, então eu converto para String para ele não dar erro, coloco o ; para evitar erro e depois disso eu pego e printo o result com a função print que pede um Object?, como String é um Object ele aceita, depois o ;
Percebeu?
Enquanto eu estou narrando o que está acontecendo no meu código, eu posso perceber algo de incomum, claro que se você ter um código enorme você precisa separar ele em padaços para narrar.
Além de Erros é importante saber o que você precisa fazer
Pois é, isso não é algo que se resolva rapidamente, precisa ir aprendedo com a experiência, afinal de contas se você está começando é óbvio que você não saberá o que fazer, porém você poderá resolver muitas coisas sozinho.
As vezes se você recebe um erro de 300 linhas, o que você precisa é copiar a linha 230 e jogar no Google, e do nada aparecer nos resultados um link do TabNews ou do Stackoverflow de um carinha que passou pelo mesmo problema que outro ainda conseguiu resolver!
É importante que você desenvolva sua habilidade de pesquisar o que você não sabe, você precisa praticar, ser investigador e não ficar sempre correndo atrás de respostas de outros Devs, é claro que muitos sentem prazer em ajudar, porém o quanto mais você conseguir se virar sozinho, ou saber quando deve procurar alguém, melhor será para você.
Considerações finais
Espero que eu tenha ajudado de alguma forma!
Você já foi do tipo de ficar sem saber o que fazer quando aparecia um erro, ou você ficava investigando até conseguir colocar o negócio para funcionar ?
Quais sugestões você daria para alguem melhora suas habilidades de correções de erros?
Agradeço! :)