Skip to content

Este repositório contém exemplos práticos em TypeScript dos princípios SOLID, com cobertura total de testes, apresentados no artigo "Introdução ao SOLID: Princípios S.O.L.I.D.".

Notifications You must be signed in to change notification settings

gabrielh-silvestre/solid-examples

Repository files navigation

Exemplos de SOLID

Este repositório contém códigos em TypeScript com exemplos práticos de cada um dos princípios do SOLID, todos cobertos por testes unitários e de integração. Ele foi criado com o objetivo de servir como suporte ao artigo "Introdução ao SOLID: Princípios S.O.L.I.D." escrito por Gabriel H. Silvestre, o qual também é o autor deste repositório.

Este repositório está em construção. Novos exemplos serão adicionados em breve.

O que é SOLID?

SOLID é um acrônimo que representa cinco princípios fundamentais da programação orientada a objetos e design de software. Esses princípios foram introduzidos por Robert C. Martin e são amplamente adotados na indústria de desenvolvimento de software. Eles visam criar código mais legível, flexível, extensível e de fácil manutenção.

Os cinco princípios SOLID são:

  1. S - Princípio da Responsabilidade Única (SRP) - Uma classe deve ter apenas um motivo para mudar.
  2. O - Princípio Aberto/Fechado (OCP) - Entidades de software (classes, módulos, funções) devem ser abertas para extensão, mas fechadas para modificação.
  3. L - Princípio da Substituição de Liskov (LSP) - Objetos de uma classe derivada devem ser substituíveis por objetos de sua classe base sem afetar a corretude do programa.
  4. I - Princípio da Segregação de Interface (ISP) - Muitas interfaces específicas são melhores do que uma única interface geral.
  5. D - Princípio da Inversão de Dependência (DIP) - Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Detalhes devem depender de abstrações, e não o contrário.

Estrutura do Repositório

O repositório está organizado da seguinte maneira:

solid-examples/
|-- src/
|   |-- SinglePrinciple.ts
|   |-- OpenClosed.ts
|   |-- LiskovSubstitution.ts
|   |-- InterfaceSegregation.ts
|   |-- DependencyInversion.ts
|
|-- __tests__/
|    -- jest/
|      |-- SinglePrinciple.test.ts
|      |-- OpenClosed.test.ts
|      |-- LiskovSubstitution.test.ts
|      |-- InterfaceSegregation.test.ts
|      |-- DependencyInversion.test.ts

Cada arquivo dentro de src/ representa um dos princípios SOLID e contém exemplos práticos em TypeScript que ilustram o princípio em questão. Por exemplo, src/SinglePrinciple/ contém exemplos que seguem o Princípio da Responsabilidade Única.

Os testes correspondentes para cada exemplo estão localizados no arquivo apropriado dentro de __tests__/.

Executando os Exemplos e Testes

Para executar os exemplos e os testes deste repositório, siga as etapas abaixo:

  1. Certifique-se de ter o Node.js (LTS) instalado em seu sistema.
  2. Clone este repositório em sua máquina local usando o seguinte comando:
git clone https://github.com/gabrielh-silvestre/solid-examples.git
  1. Navegue para o diretório do repositório:
cd solid-examples
  1. Instale as dependências necessárias:
npm install
  1. Execute os exemplos para cada princípio individualmente:
npm run solid:s
npm run solid:o
npm run solid:l
npm run solid:i
npm run solid:d
  1. Execute os testes para cada princípio individualmente:
npm test Single*
npm test Open*
npm test Liskov*
npm test Interface*
npm test Dependency*

Contribuindo

Se você encontrar algum problema, tiver sugestões ou desejar adicionar mais exemplos, fique à vontade para abrir uma issue. Sua contribuição é muito bem-vinda!

Referências


Esperamos que este repositório seja útil para entender os princípios SOLID e como aplicá-los em seus projetos. Agradecemos por sua visita e interesse em nosso trabalho!

Generated by ChatGPT

About

Este repositório contém exemplos práticos em TypeScript dos princípios SOLID, com cobertura total de testes, apresentados no artigo "Introdução ao SOLID: Princípios S.O.L.I.D.".

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published