Do artigo:
De um modo mais geral, o problema do ioiô também pode se referir a qualquer situação em que uma pessoa deva continuar alternando entre diferentes fontes de informação para entender um conceito.
O código fonte é lido com muito mais frequência do que está escrito. Portanto, o problema do ioiô, de ter que alternar entre muitos arquivos, é uma preocupação.
No entanto, não , o problema do ioiô parece muito mais relevante ao lidar com módulos ou classes profundamente interdependentes (que se alternam entre si). Esse é um tipo especial de pesadelo para ler, e provavelmente é o que o criador do problema do ioiô tinha em mente.
No entanto - sim , é importante evitar muitas camadas de abstração!
Todas as abstrações não triviais, até certo ponto, são vazadas. - a lei das abstrações com vazamentos.
Por exemplo, discordo da suposição feita na resposta da mmmaaa de que "você não precisa fazer ioiô para [(visitar)] a classe ZipCode para entender a classe Address". Minha experiência tem sido que fazer - pelo menos nas primeiras vezes que você ler o código. No entanto, como os outros, não são momentos em que uma ZipCode
classe mais adequada.
YAGNI (Você não vai precisar disso) é um padrão melhor a seguir para evitar o código de lasanha (código com muitas camadas) - abstrações, como tipos e classes, estão lá para ajudar o programador e não devem ser usadas a menos que sejam um auxílio.
Pessoalmente, pretendo "salvar linhas de código" (e, claro, os relacionados "salvar arquivos / módulos / classes", etc). Estou confiante de que há quem me aplique o epíteto de "obsessivo primitivo" - acho mais importante ter um código fácil de raciocinar do que se preocupar com rótulos, padrões e antipadrões. A escolha correta de quando criar uma função, um módulo / arquivo / classe ou colocar uma função em um local comum é muito situacional. Eu aponto aproximadamente para 3-100 funções de linha, 80-500 arquivos de linha e "1, 2, n" para código de biblioteca reutilizável ( SLOC - sem incluir comentários ou clichê; normalmente eu quero pelo menos um SLOC adicional adicional por linha obrigatória padrão).
A maioria dos padrões positivos surgiu dos desenvolvedores fazendo exatamente isso, quando precisavam deles . É muito mais importante aprender a escrever código legível do que tentar aplicar padrões sem o mesmo problema a ser resolvido. Qualquer bom desenvolvedor pode implementar o padrão de fábrica sem o ter visto antes, no caso incomum em que é o ajuste certo para o problema. Eu usei o padrão de fábrica, o padrão de observador e, provavelmente, centenas além, sem saber seu nome (ou seja, existe um "padrão de atribuição de variáveis"?). Para um experimento divertido - veja quantos padrões GoF estão embutidos na linguagem JS - parei de contar após 12 a 15 anos em 2009. O padrão Factory é tão simples quanto retornar um objeto de um construtor JS, por exemplo - não há necessidade de um WidgetFactory.
Então - sim , às vezes ZipCode
é uma boa aula. No entanto, não , o problema do ioiô não é estritamente relevante.