3 estratégias para organizar nosso código de maneira mais profissional
Tags: orientacaoobjetos, designcodigo, backend, codigolimpo
Published: 2022-01-31 23:40:08

A nossa principal tarefa como desenvolvedor é resolver problemas. A nossa principal ferramenta para alcançar essa meta é o nosso código. 

Um código não profissional, tem o poder de nos atrasar consideravelmente, nos fazendo trabalhar mais lentamente. Além disso, nesse contexto de código ruim, qualquer alteração pode ser acompanhada de bugs. Isso é péssimo!

Como podemos superar isso? Como organizar o nosso código de maneira mais profissional?

### Os amigos inseparáveis

Se em algum momento da vida teve contato com orientação a objetos, já deve ter ouvido falar sobre **coesão** e **acoplamento**. Estes são dois conceitos fundamentais neste paradigma. Idealmente, um bom código é composto de alta coesão e baixo acoplamento. Talvez, podemos dizer que uma das características de um código profissional esteja resumida nesta frase.

### As 3 estratégias

Gostaria de listar três estratégias que certamente nos ajudarão na caminhada de produzir códigos com alta coesão e baixo acoplamento (ou seja, código mais profissional).

**Nem tudo precisa estar público**

Quanto mais aberto for cada um dos nossos contextos, mais a nossa base de código se tornará uma emaranhado de objetos. Certamente a manutenção desse código será mais difícil, já que existe uma ligação muito grande entre todo o código **(alto acoplamento)**. Isso pode fazer com que a alteração em um ponto do sistema propague a necessidade de mudanças em outros. Nós precisamos resistir a tentação de deixar tudo público! Isso diminui as chances de criar dependências desnecessárias para as nossas classes.

**Cada um no seu quadrado**

Os pacotes devem conter todas as classes de um contexto específico. O código que serve a um propósito comum deve se manter unido. Isso mantém nosso código mais coeso. Baixa coesão significa que o código que compõem alguma funcionalidade pode estar espalhado por toda a base de código, em diversos contextos. Isso dificulta tanto a legibilidade como a manutenibilidade.

**Programando para interfaces**

Como então um contexto pode conversar com outro sem deixar todas as classes públicas? Uma das maneiras de resolver esse problema é permitir que os contextos se comuniquem através de interfaces e que na medida do possível, apenas elas sejam publicas. Ela será a porta de entrada do seu contexto.

### Conclusão

Este foi um primeiro passo para o desenvolvimento de um código mais profissional. Certamente a aplicação dessas estratégias, permitirá desenvolver um código melhor, mais fácil de manter e mais adaptável a novos requisitos. Espero que tenha gostado do conteúdo, até a próxima 🤙!

####  📃 Para saber mais

- https://dzone.com/articles/we-are-structuring-code-wrongly
- https://stackoverflow.com/questions/39946/coupling-and-cohesion/39988#39988
- https://softwareengineering.stackexchange.com/questions/334591/why-not-make-everything-private-or-public
- https://cursos.alura.com.br/forum/topico-sobre-programar-para-interfaces-18358
- https://blog.matheuscastiglioni.com.br/medindo-e-entendendo-acoplamento/#:~:text=Acoplamento%20Aferente%3A%20Mede%20o%20n%C3%BAmero,conex%C3%B5es%20que%20sai%20dos%20c%C3%B3digos
- https://medium.com/clarityhub/low-coupling-high-cohesion-3610e35ac4a6

Créditos foto: _<a href='https://br.freepik.com/fotos-vetores-gratis/fundo'>Fundo foto criado por evening_tao - br.freepik.com</a>_