Lädt...


🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos para Desenvolvedores.


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Olá devs, venho trazer uma série de 5 artigos abordando com teoria e exemplos de código em java, cada letra que simboliza os princípios da palavra SOLID, caso você não saiba, SOLID é um acrônimo para cinco princípios fundamentais do design orientado a objetos (POO), estabelecidos por Robert C. Martin ("Uncle Bob"). Esses princípios visam aprimorar a qualidade, a manutenibilidade e a extensibilidade do código, tornando-o mais robusto e resiliente às mudanças.

Neste artigo comecarei falando sobre o primeiro princípio:

[S] - Single Responsibility Principle,
Princípio da Responsabilidade Única
“Nunca deve haver mais de um motivo para uma classe mudar.”

Afirma que cada módulo de software (classe, método, etc.) deve ter apenas uma única responsabilidade. Em outras palavras, cada módulo deve ser responsável por uma única função bem definida e não deve se preocupar com nenhuma outra função.

Vantagens do SRP:

  1. Maior modularidade: O SRP leva a um código mais modular, o que facilita o entendimento, a manutenção e a reutilização. Módulos menores e mais focados são mais fáceis de compreender e modificar, sem afetar outras partes do código.
  2. Maior coesão: O SRP promove maior coesão dentro dos módulos, garantindo que cada módulo se concentre em uma única tarefa e que todo o código dentro do módulo esteja relacionado a essa tarefa. Isso resulta em um código mais organizado e menos propenso a erros.
  3. Maior flexibilidade: O SRP torna o código mais flexível e adaptável a mudanças. Se a necessidade de modificar o código surgir, é mais provável que apenas um módulo precise ser alterado, minimizando o impacto em outras partes do sistema.
  4. Maior testabilidade: O SRP facilita a testabilidade do código, pois cada módulo pode ser testado de forma independente, isolando-o de outras dependências. Isso garante que cada módulo funcione conforme o esperado e facilita a identificação de erros.
  5. Maior reutilização: O SRP promove maior reutilização de código, pois módulos com única responsabilidade são mais fáceis de serem entendidos e integrados em outros projetos.

Dividir uma classe grande em classes menores: Se uma classe possui várias responsabilidades distintas, ela pode ser dividida em classes menores, cada uma com uma única responsabilidade.
Criar interfaces para abstrair responsabilidades: Interfaces podem ser usadas para abstrair responsabilidades de classes concretas, permitindo que diferentes classes implementem a mesma interface de maneiras diferentes.

Vamos a um exemplo com e sem SRP.

Classe EmployeeService sem SRP

Image description

Nesta implementação, a classe EmployeeService lida com:

  • Operações CRUD para Employee.
  • Envio de notificações por email.
  • Gerenciamento de endereços.
  • Isso torna a classe difícil de manter e estender, pois mudanças em uma responsabilidade podem afetar outras.

Com SRP
Aplicando o SRP, separamos as responsabilidades em diferentes classes, cada uma com uma única responsabilidade. Isso torna o código mais modular e fácil de manter.

Classe EmployeeService com SRP

Classe EmployeeService
Image description

Classe NotificationService
Image description

Classe AddressService
Image description

Classe EmployeeRepository
Image description

Classe AddressRepository
Image description

Ao aplicar o SRP, separamos claramente as responsabilidades, facilitando a manutenção e a extensão do código. Agora, cada classe tem uma única responsabilidade, tornando o sistema mais modular e fácil de entender.

...

🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos para Desenvolvedores.


📈 166.63 Punkte
🔧 Programmierung

🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos. [D] Dependency Inversion Principle - DIP


📈 127.42 Punkte
🔧 Programmierung

🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos. [O] - Open/Closed Principle - OCP


📈 127.42 Punkte
🔧 Programmierung

🔧 Os pilares da Programação Orientada a Objetos


📈 99.49 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos e Programação Funcional


📈 91.44 Punkte
🔧 Programmierung

🔧 SOLID - Princípios da Programação Orientada a Objetos (OOP)


📈 69.89 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos: Herança


📈 69.89 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos: Abstração


📈 69.89 Punkte
🔧 Programmierung

🔧 Desenvolva suas habilidades de programação de forma divertida: 10 jogos para aprender programação


📈 55.89 Punkte
🔧 Programmierung

🔧 Programación Orientada a Objetos en TypeScript


📈 48.34 Punkte
🔧 Programmierung

🔧 Programación Orientada a Objetos - Una abstracción de la realidad


📈 48.34 Punkte
🔧 Programmierung

🔧 Explorando los Fundamentos de la Programación Orientada a Objetos en C#


📈 48.34 Punkte
🔧 Programmierung

📰 Cinco consejos para pasar a la contratación por competencias


📈 40.73 Punkte
📰 IT Security Nachrichten

📰 Cinco mejores prácticas para implantar con éxito la IA generativa


📈 40.73 Punkte
📰 IT Security Nachrichten

🔧 JavaScript Moderno: Recursos Avançados para Desenvolvedores


📈 39.21 Punkte
🔧 Programmierung

🔧 Acessibilidade digital - Dicas de NVDA para desenvolvedores web


📈 39.21 Punkte
🔧 Programmierung

🔧 O Que é UX/UI Design e Por Que É Importante para Desenvolvedores


📈 39.21 Punkte
🔧 Programmierung

🔧 10 Ferramentas de Produtividade para Desenvolvedores Experimentarem em 2024


📈 39.21 Punkte
🔧 Programmierung

🔧 Leitura obrigatória para novos desenvolvedores: Rejeições da PlayStore em 5 minutos


📈 39.21 Punkte
🔧 Programmierung

🔧 SOLID para desenvolvedores iniciantes.


📈 39.21 Punkte
🔧 Programmierung

🔧 Por que autenticação e autorização são importantes para desenvolvedores?


📈 39.21 Punkte
🔧 Programmierung

🔧 22 Extensões do Chrome focadas em produtividade para Desenvolvedores, Techs e Designers


📈 39.21 Punkte
🔧 Programmierung

🔧 Passe objetos para os métodos


📈 34.73 Punkte
🔧 Programmierung

🔧 Como tem sido o meu processo criativo para escrever um livro infantil sobre programação


📈 34.35 Punkte
🔧 Programmierung

🔧 Porque GitHub Codespaces é a melhor ferramenta para seu Workshop de programação


📈 34.35 Punkte
🔧 Programmierung

🔧 Lista de Exercícios para treinar Lógica de Programação 2.


📈 34.35 Punkte
🔧 Programmierung

🔧 Lista de Exercícios para treinar Lógica de Programação


📈 34.35 Punkte
🔧 Programmierung

🔧 15 Livros para você Aprender a Criar Sua Própria Linguagem de Programação


📈 34.35 Punkte
🔧 Programmierung

🔧 Como a programação ajudou minha viagem para a Coreia do Sul


📈 34.35 Punkte
🔧 Programmierung

🔧 Ponteiros na programação para iniciantes.


📈 34.35 Punkte
🔧 Programmierung

🔧 Dicas para iniciantes na programação:


📈 34.35 Punkte
🔧 Programmierung

🔧 Dominando os Desafios da Programação: Um Guia para os Erros Léxicos, Sintáticos e Semânticos


📈 34.35 Punkte
🔧 Programmierung

matomo