YAGNI, KISS e DRY

Matheus Kielkowski
3 min readFeb 7, 2021

--

Conceitos simples mas que nos ajudam muito a olhar para nosso código com outra perspectiva!

DRY, KISS e YAGNI são três principios que todo desenvolvedor, não importa o nível que esteja, deveria ao menos conhecer.

Essas pragmas podem fazer você rever a maneira com que projeta suas aplicações no dia a dia, ajudando não só a si mesmo, mas também seus companheiros de equipe e futuros desenvolvedores que precisarão dar sustentação ao software.

Mas agora chega de sermões e vamos para o que interessa!

DRY (Don’t Repeat Yourself)

Cada parte do conhecimento deve ter uma representação única, não ambígua e definitiva dentro do sistema.

Ao pé da letra, este conceito implica em não repetir códigos que tenham a mesma funcionalidade, e para isso é necessário dividir o sistema em partições, criando funções reutilizáveis que sejam de fácil compreensão e que tenham um único propósito.

Duplicação de funções ou tarefas podem aparecer na arquitetura, em requisitos de negócio, no desenvolvimento de código e até mesmo na documentação do software. Isto pode causar falhas na implementação e até confusão para os desenvolvedores à respeito do que cada trecho de código realmente faz, podendo ocasionar erros que afetam o projeto inteiro.

DRY evita diversos problemas como manutenção de código desnecessária, aumento de bugs por conta da duplicidade de responsabilidades e até mesmo desempenho da aplicação.

KISS — Keep It Simple and Stupid!

Mantenha as coisas simples!

Muitos desenvolvedores (principalmente no começo da carreira) se impressionam e se sentem realmente bons quando desenvolvem um algoritmo consideravelmente complexo mas com baixo número de linhas.

É… não queria estragar sua felicidade, mas se este é seu caso pare imediatamente!

Quando estamos trabalhando em equipe, precisamos sempre ter em mente que outras pessoas de diferentes contextos e niveís de senioridade estarão lendo nosso código. Então é de extrema importância deixar as coisas literalmente estúpidas, para que qualquer um possa ler e entender sem perder muito tempo.

Afinal, precisamos gastar nosso raciocínio pensando em como vamos implementar a demanda solicitada, e não em o que aquele trecho de código específico está fazendo.

KISS é utilizado em diversas áreas, desdo do design de interface até os confins da engenharia. Então costumo dizer que uma boa implementação desse conceito é quando você desenvolve uma coisa que seja:
simples, funcional e econômica.

Esta ideia na minha opinião vai além de um teorema de desenvolvimento de software para um estilo de vida.

Isto te ajudará bastante caso se tenha um prazo de entrega curto e um chefe bastante rigoroso.

YAGNI — You ain’t gonna need it

No começo de todo desenvolvimento de um projeto de software, sempre imaginamos e projetamos coisas que iremos precisar para desenvolver tal aplicação. Seja estas coisas funções especifícas, frameworks modernos, estilos arquiteturais conceituados, ferramentas de Cloud com alta escalabilidade, etc.
Mas durante o desenvolvimento vamos percebendo que existiria uma maneira mais fácil de fazer aquilo que implementamos, ou as vezes nem precisavamos daquilo.

O conceito do YAGNI é justamente esse, não usar aquilo que não é necessário!

Esse dilema vem para refletirmos se aquela nova funcionalidade ou ferramenta que estamos implementando é realmente necessária. Pois caso você não tenha um bom motivo para adicionar ao projeto, não adicione!

Costumo dizer que complexidade desnecessária é custo.
Logo se você evitar tais implementações desnecessárias, estará economizando tempo, pois não será preciso escrever, refatorar ou debuggar código que não se faz útil no momento, mantendo um código limpo, objetivo e organizado.

Conclusão

Agradeço à todos que disponibilizaram um tempo do seu dia para ler este artigo e refletir sobre o assunto.

Obrigado!

--

--

Matheus Kielkowski

Software Enginner in love with web technologies 👨‍💻