Avisos do Compilador

14

Muitos compiladores têm mensagens de aviso para avisar os programadores sobre possíveis erros de tempo de execução, lógica e desempenho; na maioria das vezes, você os corrige rapidamente, mas e os avisos unfixable?

Como você lida com avisos não corrigíveis? Você reescreve uma parte do código ou a reescreve na "maneira longa e sem recursos" ou desativa todos os avisos? Qual deve ser a melhor prática?

E se você estiver editando o código de outra pessoa e o código dele tiver avisos?

Aqui está um bom exemplo: jQuery tem um monte de avisos JavaScript como um navegador de classe Mozilla detectado, por que os desenvolvedores de jq não corrigi-los? Se você contribuir para o jQuery, você vai consertá-los?

    
por Ming-Tang 06.11.2010 / 19:10
fonte

9 respostas

22

Alguns avisos costumam ser seguros para ignorar mas se você fizer isso com o tempo eles se multiplicarão até chegar aquele dia em que você perderá o único aviso que realmente importa porque está oculto no barulho.

Corrija os avisos imediatamente (o que pode incluir a desabilitação de regras individuais se você achar que nunca é relevante para o seu contexto).

    
por 07.11.2010 / 00:12
fonte
29

Minha opinião é que você deve ser rigoroso consigo mesmo. O compilador foi escrito pelo total de especialistas no idioma. Se eles estão relatando que algo está um pouco estranho (pense no cheiro do código), então o código deve ser revisado.

É inteiramente possível escrever código que compila sem erros e sem avisos.

    
por 06.11.2010 / 19:43
fonte
8

Quando eu estava escrevendo em C e C ++, eu ativava as configurações mais rígidas que podia, porque queria saber quando algo não fazia sentido para o compilador. Quando eu terminasse de lançar e verificar os valores de retorno, ficaria feliz porque o código estava tão correto quanto eu poderia fazê-lo.

Eu ocasionalmente recebo código de outra pessoa que vomita avisos. Verificar a fonte mostrou que eles estavam ignorando coisas que eram boas práticas de programação em C, tornando seu código frágil.

Então, acho que há boas razões para permitir o rigor e reservar um tempo para consertar as coisas. Fazer o contrário é desleixado. Se eu tivesse um colega de trabalho que desativasse os avisos, eu passaria algum tempo com eles E o gerente explicaria por que isso é realmente uma coisa ruim.

    
por 06.11.2010 / 20:02
fonte
6

Eu consertaria qualquer aviso. Se você ignorá-los e deixá-los acumular, você pode realmente perder algo importante.

    
por 07.11.2010 / 02:09
fonte
4

Geralmente você deve se esforçar para tornar o compilador silencioso, para que novos avisos mostrem mais. Estes avisos podem indicar bugs sutis e devem ser tratados de acordo.

Em relação à correção de código de outras pessoas, isso depende muito da cultura do local de trabalho e do estado atual do código. Você não pode simplesmente alterar o código se ele disparar um ciclo completo de reteste, como seria para o código no final da fase de teste ou na produção.

Pergunte ao seu chefe e aja de acordo.

    
por 07.11.2010 / 10:21
fonte
2

Toda vez que você vê um aviso de compilador, você tem que parar e pensar se realmente é um problema esperar para explodir na sua cara no site do cliente, ou algo que você pode ignorar. Pior, as coisas que você pode ignorar hoje podem ser coisas que explodirão no site do cliente em alguns anos, depois de uma mudança de código aparentemente não relacionada em algum outro lugar.

Corrigir os avisos. Período. É isso ou documentar cada um deles, com tantas páginas de explicação quanto for necessário para provar que não é um risco, acompanhado por uma ordem de venda assinada em sua namorada favorita (ou pornografia) se for o caso. Foi um risco.

    
por 06.11.2010 / 23:51
fonte
2

Geralmente, você deseja que sua construção seja livre de aviso. Os avisos estão lá por uma razão e, muitas vezes, apontam para problemas muito reais. Se você adquire o hábito de ignorar os avisos do compilador, eventualmente sua compilação terá uma tonelada deles, e você perderá o aviso que é causado por um problema catastrófico que custará caro à sua empresa. Por outro lado, se o seu programa normalmente compila sem avisos, então cada novo aviso é imediatamente percebido e pode ser rapidamente endereçado.

Dito isto, às vezes os compiladores podem ter avisos que fazem pouco sentido e que não podem ser facilmente corrigidos. Eu enfrento essa situação todos os dias no trabalho com o TI CodeComposer, que é um ambiente de desenvolvimento para TI DSPs. Eu tenho código C ++ que compila sem avisos no Visual Studio, mas que resulta em avisos estranhos no CodeComposer, simplesmente porque o suporte da TI para C ++ padrão poderia ser melhor. Felizmente, CodeComposer permite desativar avisos específicos individualmente, que é o que temos que fazer quando não há como consertar o código que produz o aviso.

    
por 07.11.2010 / 01:10
fonte
1

No meu caso, os avisos vêm da ferramenta PyLint e posso desativar um aviso em uma linha específica, adicionando um texto especial nos comentários.

Na maioria dos casos, não faço isso. Na maioria dos casos, eu mudo o código para seguir o que o PyLint sugere, porque o PyLint geralmente está correto. No entanto, não gosta de construções que geralmente são uma má ideia, mas que fazem sentido em um contexto particular. Por exemplo, ele reclama se eu pegar todas as exceções possíveis. Normalmente, é correto, isso seria uma má ideia. No entanto, em alguns casos, desejo capturar todas as exceções, como enviar um relatório de erro com os detalhes.

Então: Em quase todos os casos, livre-se dos hacks. Quando o hack for realmente justificado, adicione um comentário dizendo ao PyLint que está tudo bem.

    
por 06.11.2010 / 20:33
fonte
-1

Avisos e erros são mensagens que o compilador usa para dizer ao programador que "algo que você escreveu não fazia sentido" - a diferença entre eles é que, com um aviso, o compilador está disposto a fazer uma suposição sobre o programador. intenções, enquanto que com um erro, o compilador não pode sequer fazer um palpite.

Os erros do compilador serão endereçados (não vou dizer fixo ), mas com muita frequência, os programadores (mesmo os experientes) irão ignorar os avisos. O problema em ignorar os avisos é que às vezes o compilador adivinha o errado e se você tem mais de 1000 mensagens de aviso, é fácil perder uma mensagem de aviso indicando que o compilador está errando.

Do ponto de vista sociológico, os programas que têm muitas mensagens de aviso são Janelas quebradas .

    
por 20.04.2014 / 03:10
fonte

Tags