Princípios do S.O.L.I.D

Em maio de 2005, Robert Martin, mais conhecido como Uncle Bob, publicou um artigo sobre 11 princípios de Design para Orientação de Objetos. No artigo ele diz que não basta programar orientado a objetos, é necessário ter princípios de design para manter a qualidade. Os 5 primeiros princípios ficaram “mais famosos”, sendo estes os que formam o S.O.L.I.D.

Na verdade S.O.L.I.D. é uma sigla de siglas. Vejam abaixo as siglas que o compõe e um resumo de seu princípio:

  • SRP: The Single Responsibility Principle
    • Nome: Responsabilidade única;
    • Princípio: “Uma classe deverá ter um, e apenas um motivo para mudar”;
    • Detalhes: Uma classe deve ter apenas uma única responsabilidade, ou seja, aquela classe que tem  vários métodos com inumeras funcionalidades não atende este princípio;
    • Resultado: Existirão muito mais classes, no sistema, com poucas linhas de código

  • OCP: The Open-Close Principle
    • Nome: Aberto-fechado;
    • Princípio: “Você deve ser capaz de estender o comportamento de uma classe, mas sem modificá-la”;
    • Detalhes: Quando precisar adicionar uma nova funcionalidade a uma classe, já em produção, não se altera a classe e sim estende-a adicionando a nova funcionalidade, não alterando, assim, a original. Só é permitido alterar uma classe em produção se for para corrigir bugs.
    • Resultado: Funcionalidades construídas e em produção, não sofrem riscos de pararem de funcionar quando uma nova for adicionada;

  • LSP: The Liskov Substitution Principle
    • Nome: Substituição de Liskov;
    • Princípio: “Classes derivadas devem ser substituíveis por suas classes Base”;
    • Detalhes: Este é o mais debatido, devido a dificuldade de compreendê-lo. Uma casse derivada deve poder substituir plenamente a sua classe base sem alterar as funcionalidades;
    • Resultado: Um design onde não é permitida uma sub-classe com precondições mais fortes que a sua super-classe;

  • ISP: The Interface Segregation Principle
    • Nome: Segregação de interface;
    • Princípio: “Faça interfaces de fina granularidade, que sejam específicas para quem vai utilizá-las”;
    • Detalhes: Uma interface não deve ter inúmeras funcionalidades. Deve ser o mais enxuta possível, seguindo o princípio SRP mas voltado a interfaces;
    • Resultado: Mais interfaces dentro do sistema, porém mais estruturadas e com maior possibilidade de reutilização;

  • DIP: The Dependency Inversion Principle
    • Nome: Inversão de dependência;
    • Princípio: “Dependa de abstrações e não de classes concretas”;
    • Detalhes: Se depender apenas das interfaces, podemos substituir as classes concretas por outras totalmente diferentes, respeitando as interfaces é claro, sem alterar a estrutura do software. Isto pode ser feito até em tempo de execução;
    • Resultado: Um software com baixo acoplamento.

Leiam o artigo do Tio Bob para se aprofundar mais. Aproveitem para ouvir o podcast do .net arquitects sobre o assunto.

Abrs e fiquem com Steve Jobs….

A maioria das pessoas cometem o erro de pensar que design é a aparência. As pessoas pensam que é esse verniz – que aos designers é entregue esta caixa e dito: “Deixe bonito!” Isso não é o que achamos que seja design. Não é só o que aparece e sente. Design é como funciona.”
Steve Jobs – CEO da Apple

2 Responses to “Princípios do S.O.L.I.D”

  • Parucker says:

    E ai Don Lorival!?

    Essa série de artigos continua ou não ??
    To com o livro Head First – Design Patterns lá parado e com preguiça de ler. To esperando tu explicar cada um… que tem vários que não conheço ainda.

  • lorival says:

    Buenas chefia, Td bom?

    Estive na correria forte… agora estou voltando… acho que esta semana sai mais um post… já comecei ele, só preciso terminar.

    Penso que agora continua normalmente… hehehehe

    Abrs e belo blog o seu apropósito (até as citações são bonitas.. rsrsrs)

    Lorivas

Leave a Reply

Calendário
May 2010
M T W T F S S
« Apr   Jun »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
Nuvem de tags
Total de visitas até ontem
Biblioteca
Shelfari: Book reviews on your book blog