Melhores práticas no desenvolvimento de software
- Termo aparentemente comum mas que pode representar o sucesso ou fracasso de um projeto
- Refere-se a um conjunto de regras. técnicas, processos e padrões que foram propostos por pesquisadores e especialistas e comprovados pela indústria
- Elas evoluíram com a experiência dos desenvolvedores e gestores, com a Engenharia de Software, e são aplicadas em 3 grandes frentes:
- Gerenciamento de projetos/processo
- Qualidade do código
- Operações/Entrega.
- Visam aumentar:
- qualidade
- manutenibilidade
- escalabilidade
- colaboração do código
- garantindo a entrega eficiente e compliance com os requisitos.
1. Práticas de Codificação e Design
- Padrões de Codificação Consistentes:
- Definir e seguir um conjunto de regras para
- nomenclatura
- variáveis, classes, métodos
- formatação
- indentação, espaçamento
- estrutura
- nomenclatura
- Definir e seguir um conjunto de regras para
- A consistência torna o código mais fácil de ler e entender.
- Princípios SOLID:
- Aplique os princípios de design orientado a objetos:
- Single Responsibility Principle - Responsabilidade Única
- Uma classe deve ter apenas um único motivo para mudar. Isso não significa que uma classe deve ter apenas um método, mas sim que todas as funcionalidades dentro da classe devem estar coesas e servir a um único objetivo ou ator. Se uma classe cuida de lógica de negócios e manipulação de banco de dados, ela tem duas responsabilidades
- Open/Closed Principle - Aberto para Extensão, Fechado para Modificação
- Entidades de software (classes, módulos, funções, etc.) devem ser abertas para extensão, mas fechadas para modificação. O dev deve ser capaz de adicionar novos comportamentos e funcionalidades ao sistema sem ter que alterar o código existente que já funciona. Isso geralmente é alcançado usando herança, polimorfismo e interfaces.
- Liskov Substitution Principle - Substituição de Liskov
- Objetos em um programa devem ser substituíveis por instâncias de seus subtipos sem alterar a correção desse programa. Se existir uma classe base (Pai) e uma classe derivada (Filho), você deve poder usar o objeto Filho em qualquer lugar que o objeto Pai seja esperado, sem quebrar o código. Isso garante que a herança seja usada de forma correta e lógica.
- Interface Segregation Principle - Segregação de Interfaces
- Clientes (classes que utilizam a interface) não devem ser forçados a depender de interfaces que não utilizam. É melhor ter muitas interfaces pequenas e específicas do que uma única interface grande e "gorda". Isso evita que uma classe implemente métodos que ela não precisa ou não usa.
- Dependency Inversion Principle - Inversão de Dependência
- Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações. Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações. Em vez de uma classe de alto nível depender de uma implementação concreta (baixo nível, como uma classe de banco de dados específica), ela deve depender de uma interface ou classe abstrata. Isso facilita a troca da implementação de baixo nível sem alterar o código de alto nível.
- Single Responsibility Principle - Responsabilidade Única
- Aplique os princípios de design orientado a objetos:
- Código Limpo Clean Code:
- Escreva código que seja fácil de entender, modificar e estender
- Use nomes significativos para variáveis e funções
- Evite funções longas e classes gigantes
- Elimine duplicação.
- Revisão de Código Code Review:
- Faça com que outros desenvolvedores revisem o código antes da integração
- Isso ajuda:
- a identificar bugs
- garantir a conformidade com os padrões
- compartilhar conhecimento.
Entrega próxima aula
- Conteúdo:
- Exemplos do código do projeto de PDSI1, cumprindo os 5 princípios do SOLID + Code Review
- Destino:
- Link na Wiki: MelhoresPráticas
- Basta colar o código e explicar como foi a melhor prática aplicada
- ou
- Subir o arquivo para Pasta 2025-2 contendo o código e a expplicação
- Link na Wiki: MelhoresPráticas
- Quantidade:
- Pode ser um código apenas ou vários códigos mas que no final consigamos entender as práticas aplicadas, sejam os do Solid ou o Clean Code
- Obs:
- Destacar no código, a parte onde atende algum princípio do Solid ou o Clean code.