Pergunta

Normalmente coloco em variáveis ​​valores que são usados ​​apenas uma vez após a atribuição.Faço isso para tornar a depuração mais conveniente posteriormente, pois posso passar o mouse sobre o valor na linha onde ele será usado posteriormente.

Por exemplo, este código não permite que você passe o mouse sobre o valor de GetFoo():

return GetFoo();

Mas este código faz:

var foo = GetFoo();
return foo; // your hover-foo is great

Isso cheira muito YAGNI-esque, Enquanto o funcionalidade do fooA atribuição de nunca será usada até que alguém precise depurar seu valor, o que pode nunca acontece.Se não fosse pelo meramente previsto sessão de depuração, o primeiro trecho de código acima mantém o código mais simples.

Como você escreveria o código para obter o melhor compromisso entre simplicidade e facilidade de uso do depurador?

Foi útil?

Solução

Não conheço outros depuradores, mas o depurador integrado do Visual Studio relatará o que foi retornado de uma função na janela "Autos";depois que você passa pela instrução de retorno, o valor de retorno aparece como "[nome da função] retornado" com um valor de qualquer valor retornado.

gdb também suporta a mesma funcionalidade;o comando "finish" executa o restante da função atual e imprime o valor de retorno.

Sendo este um recurso muito útil, eu ficaria surpreso se a maioria dos outros depuradores não apoiar esta capacidade.

Quanto ao "problema" mais geral das "variáveis ​​somente do depurador", elas são realmente somente do depurador?Tenho tendência a pensar que o uso de variáveis ​​temporárias bem nomeadas também pode melhorar significativamente a legibilidade do código.

Outras dicas

Outra possibilidade é aprender programação assembly suficiente para poder ler o código gerado pelo seu compilador.Com essa habilidade, você pode descobrir onde o valor está armazenado (em um registrador, na memória) e ver o valor sem precisar armazená-lo em uma variável.

Essa habilidade é muito útil se você precisar depurar um executável otimizado.O otimizador pode gerar código significativamente diferente de como você o escreveu, de modo que a depuração simbólica não seja útil.

Outro motivo pelo qual você não precisa de variáveis ​​intermediárias no depurador do Visual Studio é que você pode avaliar a função na janela de observação e na janela imediata.Para a janela de observação, basta destacar a instrução que deseja avaliar e arrastá-la para a janela.

Eu diria que não vale a pena se preocupar.Dado que não há sobrecarga de tempo de execução no caso típico, enlouqueça.Acho que dividir declarações complexas em múltiplas declarações simples geralmente aumenta a legibilidade.

Eu deixaria de fora a tarefa até que seja necessário.Se você nunca esteve naquele pedaço de código, querendo dar uma olhada naquela variável, você não desorganizou seu código desnecessariamente.Quando você se deparar com a necessidade, coloque-a (deve ser uma tarefa trivial). Extrair variável reestruturação).E quando terminar a sessão de depuração, livre-se dela (Variável embutida).Se você estiver depurando tanto - e tanto naquele ponto específico - que está cansado de refatorar para frente e para trás, pense em maneiras de evitar essa necessidade;talvez mais testes unitários ajudassem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top