Recentemente, tive uma entrevista de emprego na qual eles me deram uma hora para escrever um código real. Não era uma quantidade enorme, provavelmente menos de 100 linhas. Após cerca de 45 minutos, compilei, executei e fiz funcionar. Eu posso ter gasto de 5 a 10 minutos trabalhando com erros de compilação e alguns pequenos erros, mas no geral foi muito tranquilo. (Aliás, recebi uma oferta deles.)
No entanto, o que me intrigou foi que, depois que eu entreguei o código completo, o entrevistador me disse que a única coisa que fiz de errado foi "não compilar à medida que avanço". Perguntei a ele qual era a diferença e ele disse "o que você faria se terminasse o código e ele não fosse compilado a tempo".
No meu entendimento, esse é um argumento inválido, porque "obter código para compilar" para um determinado comprimento de código geralmente envolve a correção de um número constante de erros de compilação e leva um tempo bastante constante, que deve ser o mesmo, se você fizer isso depois de fazer o mesmo. termine de escrever o código ou se você o intercalar com o tempo de codificação. Se alguma coisa, interromper sua codificação para procurar pontos e vírgulas ausentes provavelmente seria prejudicial à sua eficiência. Exceto em circunstâncias extremas, quando estou experimentando obscuridades em casos extremos em coisas como funções virtuais em classes derivadas, etc. parece razoável esperar que o código escrito por um desenvolvedor experiente compile, menos o erro de digitação ocasional e até se não, é '
Em outro incidente semelhante, recebi uma base de código incompleta em uma entrevista e pedi para finalizá-la e fazer as modificações necessárias para fazê-la funcionar. Comecei lendo o código existente e, depois de alguns minutos (mesmo antes de terminar de ler o código), o entrevistador me disse que isso basta. Quando perguntei a ele o que ele teria feito (ou seja, "o que eu fiz de errado"), ele me disse que começaria obtendo imediatamente o código para compilar.
Por que isso é relevante? Na minha opinião e na minha experiência, se um pedaço de código é compilado ou não é essencialmente aleatório, envolvendo coisas como falta ou não-ponto-e-vírgula e pouco tem a ver com a correção do programa subjacente. (Para mim, focar na compilação é como executar um artigo em uma verificação ortográfica sem revisão para verificar a gramática.)
Se você me der um pedaço de código incompleto, a primeira coisa que faço será lê-lo. Nem tentarei compilá-lo até saber o que o código está fazendo e o algoritmo está correto.
De qualquer forma, esses foram apenas alguns incidentes recentes, mas, em geral, ouvi muitos desenvolvedores falarem sobre a compilação de seu código à medida que avançam, e ainda assim ninguém foi capaz de me dizer o benefício disso. Entendo os benefícios de testar seu código à medida que avança, mas por que compilar?
Então, minha pergunta é a seguinte: há algo que eu perdi? Existe realmente um benefício em compilar à medida que avança? Ou isso é algum tipo de mito propagado pela comunidade de software de que você deve compilar seu código com frequência?