YAGNI - Você não vai precisar disso.
Tags: programming, principle, estude, dev
Published: 2021-12-08 01:03:23

## O que é YAGNI?

O YAGNI(You arin't gonna need it) é um princípio que retrata sobre não usar aquilo que não é necessário. Com isso, quando vamos desenvolver um software, antes de começar a fazer, começamos a planejar o que vamos utilizar nele, como: 

- Ferramentas
- Frameworks
- Linguagens de Programação
- SQL ou NoSQL
- Testes
- Princípios

Pensamos em colocar em prática muitas coisas não é mesmo? Por isso comecei a escrever primeiro sobre [**KISS**](https://dev.to/suspir0n/kiss-mantenha-a-simplicidade-estupido-24lh), reparou que eles se completam?

Caso não se lembrem o que é o **KISS**, resumindo, ele é um princípio que fala sobre manter a simplicidade na sua aplicação. Lembrando simples não é a mesma coisa que ser simplista, falaremos sobre isso em outro artigo.

Como ambos se completam tanto o **KISS** como o **YAGNI**, para manter a simplicidade, apenas usaremos tecnologias necessárias, é neste momento que o YAGNI entra, mas como saber se algo é necessário ou não no momento? 

Vamos para um exemplo, digamos que tenham que desenvolver uma API. Do que eu preciso para criar uma solicitação do tipo GET?

Primeiro precisará de uma framework para facilitá o desenvolvimento, neste exemplo vou usar o **FastAPI**.

Arquivo main.py
```python
from fastapi import FastAPI

app = FastAPI()

@app.get('/')
async def index():
    return {"Hello World": "Olá Mundo"}
```

Reparou? Bem simples não é mesmo?

No momento não era necessário, eu criar varias pastas ou arquivos, separar a responsabilidade, neste momento isso não é necessário, pois o meu objetivo era fazer uma solicitação do tipo GET simples para validação. Veja que não é necessário de várias ferramentas, isto vai vendo com o decorrer do desenvolvimento, implementando apenas o necessário. 

Resumindo, quando falamos que YAGNI é um princípio que diz "não usar aquilo que não é necessário", nos referimos a sua tarefa, lembre-se, um passo de cada vez, se você precisa apenas da solicitação do tipo GET, para quer você vai criar uma solicitação do tipo POST se não é necessário? Deu para entender?

Segundo ao [LinkApi](https://www.linkapi.solutions/blog/yagni-kiss-e-dry) "O conceito do YAGNI é justamente esse, **não usar aquilo que não é necessário!**" e como ele mesmo diz **complexidade desnecessária é custo.**

Então o KISS usa o YAGNI, o YAGNI usa o KISS, formando um ciclo.

![Os 7 princípios que os desenvolvedores precisam conhecer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jlq89xib43g2px4wlvw0.jpg)

Já falamos de alguns destes princípios, vou deixar o link para vocês.

- [**SRP**](https://dev.to/suspir0n/o-que-e-srp-de-onde-vem-este-nome-5b68)
- [**KISS**](https://dev.to/suspir0n/kiss-mantenha-a-simplicidade-estupido-24lh)

No **SRP** falamos um pouco sobre o **SOLID**, teremos um artigo explicando do que se trata o SOLID e sobre os outros princípios citados.

Este foi o <b>diário de bordo #11</b>. Seguindo a sequência do que meu amigo @figur8 me apresentou semana passada, 3 novos princípios o **YAGNI**, **KISS** e **DRY**, hoje eu escolhi falar sobre o **YAGNI** na próxima semana irei trazer sobre o **DRY** galera, vlw. Vamos nos despedindo por aqui. Voltaremos com mais um diário de bordo.

<p align="center">
  <a href="#">
    <img src="https://cdn.dribbble.com/users/1889486/screenshots/5081642/thankyou_.gif" width="500">
  </a>
</p>

<b>Este artigo foi útil para você?</b> 
<b>Deixe um comentário abaixo.</b>

## Referências 

* [YAGNI, KISS E DRY](https://www.linkapi.solutions/blog/yagni-kiss-e-dry)