A Importância da Arquitetura Clean Code para a Linguagem C#
- #Arquitetura de Sistemas
- #.NET C#
Olá, comunidade da DIO!
Escrever seus primeiros códigos pode ser um grande desafio, não é mesmo? Principalmente quando estamos começando a dar nossos primeiros passos e não temos nenhum contato com o incrível universo da programação, ou, até mesmo, está realizando uma transição de carreira para a área de desenvolvimento de software.
Porém, com ajuda de alguns princípios e técnicas tudo isso pode ficar mais fácil até mesmo para quem está no começo de sua jornada. Você sabia que a Arquitetura Clean Code possui um papel fundamental no desenvolvimento de códigos cada vez melhores?
E no contexto de uma linguagem em específico a linguagem C# é ainda mais importante?
Gostaria de saber os motivos para aplicar Arquitetura Clean Code nos seus códigos C# e também no Ambiente .NET?
Então, não deixe de ler este artigo até o fim para entender mais sobre como a linguagem C# e o .NET podem se beneficiar da Arquitetura Clean Code!
Neste artigo você vai encontrar:
- O que é Arquitetura de Sistemas;
- Introdução ao Clean Code;
- Princípios da Arquitetura Clean Code.
- Aplicações do Clean Code em C#;
- Considerações Finais.
O Que é Arquitetura de Sistemas?
Exemplo de uma Arquitetura de Sistemas do Tipo MVC. Fonte: Macoratti.Net.Disponível em:<https://www.macoratti.net/12/11/net_arq1.htm>
Antes de iniciar a falar sobre este tão importante tema, precisamos entender alguns conceitos fundamentais sobre a palavra arquitetura que também é muito utilizada quando estamos falando do contexto da construção civil. Assim como na área da construção civil ela é importante, no cenário da construção de sistemas modernos é igualmente essencial.
As equipes de programadores atuais precisam compreender um pouco sobre essa etapa de desenvolvimento para saber qual arquitetura está sendo utilizada para ter sucesso no desenvolvimento de software, buscando sempre atender as necessidades e desejos dos clientes cada vez mais exigentes.
Podemos entender Arquitetura de Sistemas como uma espécie de subárea da Engenharia de Software que por sua vez, é bem mais ampla do que a arquitetura de software e trás conceitos ainda mais abrangentes sobre o desenvolvimento de software.
Como nosso foco é arquitetura de sistemas vamos buscar uma definição para este termo que está conquistando cada vez mais destaque dentro do cenário de desenvolvimento de software moderno. A arquitetura de sistemas consiste em uma espécie de base que irá sustentar o software, além disso irá possibilitar que que o software tenha uma estrutura sistemática que fará com que exista comunicação entre as partes envolvidas proporcionando o pleno funcionamento do mesmo. (Zenker et.al ,2019, p. 14 apud Pressman e Maxim ,2016, p. 253).
Mais quais são as vantagens de se utilizar arquitetura de sistemas em um projeto de software no atual contexto de desenvolvimento de programas e aplicativos? Confira algumas delas de acordo com Zenker et.al,2019, p.16 apud Sommervile, 2007):
- Facilitar a comunicação entre as partes interessadas;
- Melhorar a análise do sistema como um todo;
- Proporcionar o reuso dos componentes quando for necessário;
- Visão de alto nível do sistema no geral;
- Auxilia no processo de documentação do sistema;
- Torna a manutenção do código mais fácil;
- Pode reduzir o tempo de desenvolvimento de um software.
Esses são alguns dos motivos para se utilizar arquitetura de software atualmente, porém você já se perguntou quais os tipos de arquiteturas existentes?
Conheça agora mesmo quatro tipos de arquitetura de software muito utilizadas.
Tipos de Arquiteturas:
Exemplo de um Diagrama de Arquitetura de Sistemas. Fonte: Edrawsoft. Disponível em: <https://www.edrawsoft.com/pt/article/system-architecture-diagram.html>.
Arquitetura em camadas (layers)
Exemplo de Arquitetura em Camadas Layers. Fonte: Microsoft. Disponível em: <https://learn.microsoft.com/pt-br/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures>
Um dos tipos de arquiteturas mais importantes. São organizados em camadas que podem ser descontruídas comforme necessidade. Ela é muito utilizada principalmente em serviços de e-commerce e também em plataformas de streaming.
Cliente-Servidor(cliente-server)
Ocorre uma espécie de divisão entre os módulos e os processos diferentes. Uma parte fica responsável pela manutenção dos dados que contém as informações necessárias para o funcionamento e enquanto isso, a outra parte fica responsável por obter os dados essências para o funcionamento correto do software. Podemos ver sua aplicação em aplicativos de e-mail, por exemplo
MVC – Model View Controller
Consiste na divisão em três modelos diferentes: manipulação dos dados, visão, onde está a tela que o usuário irá interagir e por fim temos o controlador de fluxo. Essa divisão é uma ótima alternativa para facilitar o reuso de código. Ela está presente em diversos tipos de sistemas web diferentes, um exemplo são as plataformas de streaming.
Microsserviços
Um dos modelos mais utilizados pela comunidade de desenvolvimento, devido ao fato de entregar soluções cada vez melhores e escaláveis. Este modelo de arquitetura entrega uma multiplicidade de serviços disponíveis que pode ajudar sistemas a evitar problemas de funcionamento. Grandes empresas que utilizam grande quantidade de dados (big data) diariamente fazem uso de microsserviços.
Após conhecer a arquitetura de sistemas e sua importância pode falar sobre clean code, vamos lá?!
Introdução ao Clean Code
Representação da arquitetura Clean Code. Fonte: Blog Clean Coder. Disponível em: <https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html>
A definição do termo clean code pode causar divergências entre diversos autores. Porém de maneira geral, podemos entender o termo clean code ou simplesmente arquitetura limpa como uma maneira de facilitar a construção de um projeto, seguindo princípios que podem nortear a construção de uma solução com a máxima qualidade possível. Porém, para que isso seja possível é preciso planejamento de parte da equipe que está desenvolvendo o código para assim se alcançar o resultado esperado.
Porém, como podemos construir nossos projetos e escrever códigos seguindo o modelo clean code? A resposta não é nada simples, porém como já foi dito, tudo passa por planejamento e seguir alguns passos fundamentais:
- É preciso realizar a correta separação dos arquivos em classes e pacotes para auxiliar na organização;Utilizar nomes relacionados ao projeto que está sendo desenvolvido;
- Evitar o uso da duplicação de termos;
- O código deve ser o mais simples e eficiente possível; Um bom código deve ser testado continuamente para ser melhorado da melhor maneira possível;
- Clara elaboração das funções elas devem realizar apenas uma única coisa dentro do código;
- Fazer uso de comentários no seu código somente nos momentos em que for estritamente necessário, os comentários devem ser utilizados para auxiliar outros desenvolvedores a utilizar o código ou até mesmo, lembrar o criador do código, caso ele precise usar o código novamente algum dia;
- Utilizar a formatação correta, preferencialmente na vertical.
Essas são algumas maneiras de aplicar o clean code dentro dos seus projetos e também na elaboração de códigos cada vez melhores e de fácil utilização.
Agora conheça os princípios da arquitetura clean code:
- Princípio da Responsabilidade Única: a classes devem ter apenas um único e específico motivo para ser modificada;
- Princípio Aberto-Fechado: entende que o desenvolvedor deve ser responsável por estender o funcionamento da classe sem a necessidade realizar alguma modificação;
- Princípio da Substituição de Liskov: neste princípio, as classes consideradas derivadas devem ser responsáveis por realizar a substituição das suas respectivas classes bases;
- Princípio da Segregação de Interfaces: no geral as interfaces específicas podem ser consideradas superiores que as interfaces gerais;
- Princípio da Inversão de Dependências: consiste em que os módulos de alto nível não deveriam depender dos módulos de baixo nível, porém cada um deles devem depender das abstrações, que não deveriam depender dos detalhes, que por sua vez não devem depender das abstrações;
- Princípio DRY (Don´t Repeat Yourself): o conhecimento lógico a princípio deve existir em um único local. Deve se evitar o máximo de duplicações em variadas partes do código.
Com esses princípios aplicados o desenvolvimento do código pode se tornar mais fácil e a construção de projetos mais eficientes.
Agora que conhecemos sobre como a Arquitetura de Sistemas funciona bem como o conceito e princípios do clean code, podemos verificar suas aplicações na linguagem de programação C# bem como no ambiente .NET.
Venha conferir!
Aplicando Clean Code na Linguagem C#
C# logo/reprodução. Fonte: Growiz. Disponível em: <https://growiz.com.br/vale-a-pena-estudar-csharp/>
A linguagem de programação C# faz parte da big tech Microsoft. Ela está presente dentro da plataforma .NET e possui semelhanças com a linguagem Java, Pascal e C++. A princípio seu nome seria Cool, porém foi mudado de última hora. Seu criador é Anders Hejlsberg no final da década de 1990.
A linguagem C# é uma das mais utilizadas no mundo, figurando entre as 5 primeiras no Índice da Tiobe Software, empresa especializada qualidade de software, que lista as linguagens mais utilizadas. Com C# você pode desenvolver uma série de soluções em diferentes áreas do desenvolvimento moderno de software.
Além disso, C# é uma linguagem moderna, orientada a objetos, fortemente tipada, com uma comunidade ativa que faz partem juntamente com outras linguagens da plataforma .NET. Diante deste cenário é fundamental que os projetos escritos com código C# sigam os princípios da arquitetura limpa.
Conheça agora como utilizar clean code em C#:
- Atenção aos nomes: ao elaborar nomes para suas classes, variáveis e métodos, por exemplo, facilita o entendimento do código C# e também sua manutenção;
- Coesão nos métodos: evitar métodos muito longos podem ajudar na manutenção do código escrito em C# bem como sua leitura e interpretação;
- Cuidado com a documentação do seu código: para que um código C# possa ser mais facilmente utilizado é preciso investir em uma documentação clara, principalmente quando o seu código for utilizado para a construção de API´s públicas, por exemplo;
- Evite duplicações: aproveite os recursos disponíveis na linguagem para evitar o máximo possível a repetição exagerada de código;
- Capriche na organização: um código C# bem organizado e dividido corretamente em pastas, pacotes, projetos e namespaces é fundamental para permitir uma rápida localização dos conteúdos que você precisa e pode acelerar o desenvolvimento do projeto;
- Não se esqueça de testar o código: testar é essencial para se conseguir melhores resultados com seu código;Lidando com exceções: tratar erros e exceções dentro do código é uma parte fundamental para facilitar a escrita dos códigos em C#, não ignore essa etapa do seu código para seguir os princípios do clean code;
- Respeitando os princípios SOLID: SOLID é uma sequência de 5 princípios da programação a objetos (POO) que faz parte das principais linguagens de programação de alto nível atualmente. Eles são utilizados para facilitar o desenvolvimento de software e torna a sua manutenção mais simples. Seguindo os padrões: respeitar os padrões estabelecidos pela Microsoft pode tornar mais fácil o desenvolvimento do seu código C#, auxiliam que os projetos desenvolvidos por você possam ser utilizados por outros desenvolvedores e isso pode facilitar que você se destaque e consiga melhores oportunidades.
Comparando um código C# utilizando Clean Code com outro que não utiliza
Agora vamos ver na prática um exemplo de um código em C# que utiliza clean code e outro que não faz uso para que você possa entender melhor a diferença entre eles.
Exemplo de código em C# que utiliza clean code
using System;
public class Calculadora
{
public int Somar(int a, int b)
{
return a + b;
}
public int Subtrair(int a, int b)
{
return a - b;
}
}
public class Program
{
public static void Main()
{
Calculadora calculadora = new Calculadora();
int resultadoSoma = calculadora.Somar(5, 3);
int resultadoSubtracao = calculadora.Subtrair(10, 4);
Console.WriteLine("Soma: " + resultadoSoma);
Console.WriteLine("Subtração: " + resultadoSubtracao);
}
}
Neste código podemos visualizar a demonstração e ilustração de um código que segue os princípios do Clean Code, que é mais legível, mantível e de fácil manutenção. É possível entender o que ele faz Somar e Subtrair, pois os nomes das classes são claros, assim como a estrutura do código como um todo.
Agora vejamos o mesmo código sem aplicação do clean code:
Exemplo de código em C# sem aplicação do clean code
using System;
public class Calc
{
public int Soma(int x, int y)
{
int s = x + y;
return s;
}
public int Sub(int x, int y)
{
int r = x - y;
return r;
}
}
public class P
{
public static void Main()
{
Calc c = new Calc();
int rs = c.Soma(5, 3);
int rr = c.Sub(10, 4);
Console.WriteLine("Soma: " + rs);
Console.WriteLine("Subtracao: " + rr);
}
}
No exemplo de código que foi apresentado, os nomes de variáveis e funções utilizam abreviações e não descritivos, o que dificulta a leitura do código e ainda torna difícil o entendimento do mesmo. Outro ponto importante são as operações de soma e subtração poderiam ser consolidadas em uma função comum para evitar duplicação de código, que é considerada prejudicial.
Com isso, podemos concluir que o clean code é fundamental para elaboração de códigos cada vez melhores e fáceis de se utilizar e ainda realizar a manutenção.
Considerações Finais
Neste artigo você teve a oportunidade de conhecer um pouco sobre a arquitetura de sistemas. Nele você entendeu o conceito, suas aplicações e princípios. Além disso, foi possível conhecer sobre a arquitetura limpa, também chamada de código limpo ou simplesmente, clean code.
Além disso, você pode ler como o clean code pode ser aplicado dentro de uma das linguagens mais utilizadas no momento, segundo o Índice da empresa Tiobe Software, a linguagem C#. E dentro deste contexto, podemos percorrer por dentro de uma pequena parte da linguagem de programação.
Chegando ao fim do artigo, foi possível verificar um código em C# escrito respeitando os princípios da arquitetura limpa e outro que não faz o seu uso. Foi possível perceber uma diferença importante entre eles, principalmente na parte de interpretação do código.
Com este artigo espero que você tenha entendido a importância de se utilizar clean code em seus códigos e ver na prática como ele pode ser aplicado em uma das linguagens mais importantes do mundo.
Não deixe de atualizar seus conhecimentos em arquitetura de sistemas e clean code para aproveitar suas vantagens, não somente em C# mais também em outras linguagens de programação modernas, isso pode ser muito útil ao longo de sua carreira como desenvolvedor.
Referências
CAMPUS CODE. S.O.L.I.D.: Princípio de Inversão de Dependência. Disponível em: < https://www.campuscode.com.br/conteudos/s-o-l-i-d-principio-de-inversao-de-dependencia>. Acesso em 24/10/2023;
EDRAW. Diagrama de Arquitetura de Sistema: Um Tutorial Completo. Disponível em: < https://www.edrawsoft.com/pt/article/system-architecture-diagram.html>. Acessp em: 24/10/2023;
MICROSOFT. Arquiteturas comuns de aplicativo Web. Disponível em: < https://learn.microsoft.com/pt-br/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures>. Acesso em 24/10/2023;
MICROSOFT. Um tour pela linguagem C#. Disponível em: <https://learn.microsoft.com/pt-br/dotnet/csharp/tour-of-csharp/>. Acesso em 24/10/2023;
NOVATICA. 10 Boas práticas do livro Código Limpo. Disponível em: < https://blog.novatics.com.br/10-boas-pr%C3%A1ticas-do-livro-clean-code-6a19d4178fe1>. Acesso: 24/10/2023;
POS PUC-PR DIGITAL. Quais são os tipos de arquitetura de software e como escolher o melhor para seu projeto. Disponível em: < https://posdigital.pucpr.br/blog/tipos-de-arquitetura-de-software>. Acesso em: 24/10/2023;
TIOBE. Tiobe Index. Disponível em: <https://www.tiobe.com/tiobe-index/>. Acesso em:24/10/2023;
THE CLEAN CODER BLOG. The Clean Architeture. Disponível em: <https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html>. Acesso em: 24/10/2023;
ZENKER, Aline Maciel... [et al.]; [revisão técnica: Jésus Henrique Segantini, Júlio Henrique Araújo Pereira Machado, Maria de Fátima Webber do Prado Lima]. Arquitetura de sistemas [recurso eletrônico] –Porto Alegre: SAGAH, 2019.