Introdução
Este artigo é sobre os princípios de design de software que usamos no dia a dia de um engenheiro de software. Este artigo começa com a introdução de importantes princípios de design de software. Também discutiremos as definições de vários padrões de design. E ao final pretendo fazer um apanhado geral de todos para mostrar exemplos de utilização.
Quais são os princípios de design de software?
Os princípios de design de software são um conjunto de diretrizes que ajudam os desenvolvedores a criar um bom design de sistema. Eles ajudarão você a criar um design limpo e modular, que seria fácil de testar, depurar e manter no futuro.
Lista de princípios de design
Anotei importantes princípios de design orientado a objetos e coloquei aqui para referência rápida. Pelo menos, você terá uma ideia do que são e dos benefícios que oferecem. Eu tentei organizar a lista de acordo com duas regras. Em primeiro lugar, do mais simples ao mais difícil e, em segundo lugar, a ordem de importância (embora tudo seja importante)
- Princípio DRY
- Princípio YAGNI
- Princípio KISS
- Princípio SOLID
Obs: Veremos mais princípios ao longo dessa série de posts, vamos começar com esses quatro.
Normalmente estes princípios possuem abreviações, explicações e detalhes associados. Vamos analisar as definições de cada um listados acima.
Princípio DRYP – DON’T REPEAT YOURSELF
Esse princípio leva a reduzir a repetição no código. Reduzir o código repetido também reduz a necessidade de replicar as alterações aplicadas a um código que foi reutilizado em muitos locais da sua lógica sem uma abstração adequada para centralizar seu uso e evitar a repetição.
Princípio YAGINI – YOU AREN’T GONNA NEED IT
Não adicione nenhuma funcionalidade ao seu código até que seja realmente necessário tê-lo lá. Esse princípio nos guia a evitar a inclusão de funcionalidades no seu código que você acha que serão necessárias para o futuro, mas que não têm utilidade no presente.
Princípio KISS – KEEP IT SIMPLE STUPID
Mantenha o código simples e facilmente compreensível. Esse princípio nos orienta a escrever código que é ouvido para ler e manter. Algumas dicas para fazer isso são:
- Mantenha os métodos pequenos (menos de 40 linhas).
- Dê nomes significativos aos seus métodos e variáveis.
- Não abuse dos comentários, torne o código compreensível sem a necessidade de comentar tudo.
- Crie métodos para resolver peças pequenas.
Princípio SOLID
Solid é um conjunto de princípios (muito utilizados na programação orientada à objeto) destinados a tornar os projetos de software mais flexíveis e sustentáveis. Ajuda a criar software com código mais coeso e menos acoplamento. Pretendo, logo fazer um artigo falando apenas de S.O.L.I.D com exemplos em .net.
Cada letra da sigla corresponde a um princípio:
- S – Princípio Single Responsibility: Uma classe deve ter apenas uma única responsabilidade, apenas um motivo para existir. (alta coesão, baixo acoplamento)
- O – Princípio Open/Close : As entidades devem estar abertas para extensão, mas fechadas para modificação.
- L – Princípio Liskov substitution: Os objetos devem ser substituíveis por instâncias de seus subtipos sem alterar a correção do programa, caso contrário, você pode estar usando a abstração errada.
- I – Princípio Interface segregation: Toda classe deveria possuir um contrato com seus métodos e este “contrato” seria a interface.
- D – Princípio Dependency inversion: Depender de abstrações, não de concreções afim de reduzir o acoplamento.
Neste artigo, discuti os principais padrões de design de software, suas abreviações, introdução e uma breve discussão sobre o uso. Indo além, na próxima parte discutiremos cada um deles individualmente com mais detalhes e exemplos.