Introdução aos antipadrões

Os antipadrões são exatamente o oposto dos padrões. Lembre-se de que os padrões de projeto são exemplos de boas práticas de programação, ou seja, padrões para resolver determinados problemas. Mas os antipadrões são o oposto completo, ou seja, padrões de erros cometidos ao resolver vários problemas.

Parte da boa prática de programação é justamente evitar antipadrões. Não pense que isso é um lixo teórico tão incompreensível - esses são problemas específicos que quase todos os desenvolvedores encontraram. Quem está atento, está armado!

Vejamos alguns antipadrões comuns entre iniciantes:

  • Números mágicos e cordas
  • classe de deus
  • Otimização prematura
  • a invenção da bicicleta
  • Invenção do monociclo

Números mágicos e cordas

Um número mágico é uma constante usada no código para algo (na maioria das vezes identificação de dados), cujo número em si não faz sentido sem um comentário correspondente. Números carregam absolutamente nenhuma semântica.

Quando começam a aparecer números no código do seu projeto, cujo significado não é óbvio, isso é muito ruim. Um programador que não seja o autor desse código terá dificuldade em explicar como ele funciona. Com o tempo, nem mesmo o autor do código com números mágicos conseguirá explicá-lo.

Os números tornam o código difícil de entender e refatorar. As principais razões para esse erro são a pressa no desenvolvimento e a falta de prática de programação. Esse antipadrão deve ser cortado pela raiz, estipulando o uso de constantes numéricas antes de iniciar o desenvolvimento.

Para resolver este problema, você precisa criar uma variável cujo nome explique a finalidade da constante numérica e atribuir a ela o valor desejado.

classe de deus

O objeto divino é um antipadrão bastante comum entre os desenvolvedores OOP. Tal objeto assume muitas funções e/ou armazena quase todos os dados. Como resultado, temos um código não portável, que, aliás, é de difícil compreensão.

Além disso, esse código é bastante difícil de manter, visto que todo o sistema depende quase que exclusivamente dele. Razões para este erro: incompetência do desenvolvedor, um desenvolvedor assumindo uma grande parte do trabalho (especialmente quando a quantidade de trabalho excede o nível de experiência do desenvolvedor).

É necessário lidar com essa abordagem dividindo as tarefas em subtarefas com as quais diferentes desenvolvedores possam lidar.

Otimização prematura

A otimização prematura é a otimização executada antes que o programador tenha todas as informações necessárias para tomar decisões informadas sobre onde e como fazê-lo.

Na prática, é difícil prever onde ocorrerá um gargalo. Tentativas de otimização antes de obter resultados empíricos levarão à complexidade do código e ao aparecimento de erros, mas não trarão nenhum benefício.

Como evitar? Primeiro, escreva um código limpo, legível e funcional usando ferramentas e algoritmos conhecidos e comprovados. Se necessário, use ferramentas de criação de perfil para encontrar gargalos. Confie em medições, não em suposições e suposições.

Exemplos e recursos

Cache antes da criação de perfil. Usando heurísticas complexas e não comprovadas em vez de algoritmos matematicamente corretos. Uma seleção de estruturas novas e não testadas que podem se comportar mal sob carga.

Qual é a dificuldade

Não é fácil determinar quando a otimização é prematura. É importante deixar espaço para crescimento com antecedência. Você precisa escolher soluções e plataformas que permitam otimizar e crescer facilmente. Além disso, às vezes a otimização prematura é usada como desculpa para códigos ruins. Por exemplo, eles usam um algoritmo O(n2) apenas porque o algoritmo seria O(n) mais difícil.

a invenção da bicicleta

O significado desse antipadrão é que o programador desenvolve sua própria solução para um problema para o qual já existem soluções e, muitas vezes, muito mais bem-sucedidas.

O desenvolvedor se considera mais inteligente, então tenta encontrar sua própria solução para cada tarefa, apesar da experiência de seus antecessores. Na maioria das vezes, isso leva apenas à perda de tempo e à diminuição da eficiência do programador. Afinal, é provável que a solução seja subótima, se for encontrada.

Obviamente, você não pode descartar completamente a possibilidade de uma solução independente, pois isso levará à programação de copiar e colar de maneira direta. O desenvolvedor deve navegar pelas tarefas que podem aparecer diante dele para resolvê-las com competência, usando soluções prontas ou inventando as suas próprias.

Muitas vezes, o motivo desse antipadrão é uma simples falta de tempo. E tempo é dinheiro.

Invenção da bicicleta de roda quadrada

Esse antipadrão está intimamente relacionado a simplesmente reinventar a roda - criar sua própria solução ruim quando existe uma solução melhor.

Esse antipadrão leva o dobro do tempo: primeiro, o tempo é gasto inventando e implementando sua própria solução e depois refatorando-a ou substituindo-a.

O programador deve estar ciente da existência de várias soluções para determinadas gamas de tarefas, orientando-se pelas suas vantagens e desvantagens.

Todos os problemas que você enfrentará como programador podem ser divididos em duas partes:

  • pessoas inteligentes resolveram esse problema há 30 anos
  • pessoas inteligentes resolveram esse problema há 50 anos

A maioria dos problemas de programação foi resolvida com sucesso antes mesmo de você nascer . Não há necessidade de inventar nada - apenas estude a experiência de outras pessoas (é para isso que os livros são escritos).

Em 2022, podemos comemorar os seguintes aniversários:

  • Linguagens de programação
    • A linguagem C completa 50 anos (1972)
    • A linguagem Java completou 27 anos (1995)
    • Python completa 31 anos (1991)
  • Conexão
    • A Internet completou 39 anos (1983)
    • O celular completou 49 anos (1973)
    • O primeiro SMS foi enviado há 30 anos (1992)
  • Padrões
    • O padrão MVC completou 44 anos (1978)
    • O SQL foi inventado há 48 anos (1974)
    • Java Beans foi inventado há 26 anos (1996)
  • bibliotecas
    • Hibernate foi inventado há 21 anos (2001)
    • A primavera foi inventada há 20 anos (2002)
    • Tomcat lançado há 23 anos (1999)
  • SO
    • O Unix foi lançado há 51 anos (1971)
    • Windows viu a luz do dia 37 anos atrás (1985)
    • Mac OS lançado há 21 anos (2001)

E todas essas coisas não foram apenas inventadas, foram desenvolvidas como soluções para problemas muito comuns e relevantes naquela época.