3 pontos por GN⁺ 2023-09-17 | 1 comentários | Compartilhar no WhatsApp
  • Artigo que discute a legibilidade de código linear, desafiando a perspectiva apresentada no Google Testing Blog
  • O autor não concorda com a afirmação do Google Testing Blog de que funções com níveis de abstração separados são mais legíveis
  • O autor argumenta que um código linear, lido de cima para baixo, é mais intuitivo e fácil de entender do que um código que fica alternando entre diferentes níveis de abstração
  • O autor explica seu argumento com o exemplo de uma função para assar pizza, questionando se a função deve aquecer o forno ou se o forno deveria ser pré-aquecido antes
  • O autor sugere que a legibilidade do código não vem da estrutura que separa níveis de abstração, mas do fato de cada parte do código explicar claramente o que faz
  • O autor se opõe à extração de pequenas funções em código linear e conclui que, especialmente quando elas são usadas apenas uma vez, o benefício não compensa a perda de linearidade
  • O autor também aponta possíveis problemas relacionados à função de assar pizza, questionando por que um novo forno é criado toda vez que uma pizza é feita, o que pode causar problemas de desempenho em código real
  • O autor sugere que o forno deveria ser um parâmetro da função, que seu fornecimento deveria ser responsabilidade do chamador, e que a função deveria retornar a caixa, não a pizza

1 comentários

 
GN⁺ 2023-09-17
Opinião no Hacker News
  • A legibilidade de código linear e código modular é uma questão de estilo, e exige bom julgamento e sensibilidade.
  • Abstração excessiva pode causar acoplamento prematuro do código.
  • Extrair funções para abstrair unidades de trabalho pode organizar o algoritmo, mas deve ser usado com cuidado.
  • O código de exemplo fornecido é simples e tem pouca escalabilidade. Reutilização e possibilidade de testes unitários também devem ser consideradas.
  • Refatoração excessiva pode dificultar a manutenção por causa da necessidade de mover outras partes do código.
  • Código linear é fácil de ler por seguir a ordem de execução, mas escala mal em bases de código grandes.
  • Funções concisas com pilhas de chamadas profundamente aninhadas podem virar um pesadelo em bases de código grandes.
  • Um bom código linear é mais fácil de ler, mas mais difícil de manter e testar.
  • É uma boa prática manter as funções tão pequenas quanto possível e próximas de um único propósito.
  • A estrutura do código deve ser organizada de acordo com os casos de uso do negócio para facilitar a navegação.
  • Tanto o código linear quanto o modular são lidos de forma linear, mas a ordem das funções pode afetar a legibilidade.
  • Código real costuma ser mais complexo, e é preciso uma visão geral de alto nível para que o leitor não se perca nos detalhes.