Article image
Jorge J√ļnior
Jorge J√ļnior26/10/2023 12:31
Compartilhe

ūüí•ūüí• SOLID Design: qual a regra mais importante?

    A qualidade do c√≥digo √© um fator cr√≠tico no desenvolvimento de software. Neste artigo, vou explorar a regra mais importante do Clean Code e tentar explicar da maneira mais simples poss√≠vel para que n√£o reste d√ļvida sobre o tema, tudo centrado na aplica√ß√£o dos princ√≠pios SOLID.¬†

    Para tanto, entenda que os princípios são diretrizes essenciais para escrever código robusto, legível e facilmente mantido. Eles foram apresentados pela primeira vez por Robert C. Martin e posteriormente consolidados por Michael Feathers, visando melhorar a arquitetura de software. São eles:

    S - Princípio da Responsabilidade Única (Single Responsibility Principle)

    O - Princípio Aberto-Fechado (Open-Closed Principle)

    L - Princípio da Substituição de Liskov (Liskov Substitution Principle)

    I - Princípio da Segregação de Interfaces (Interface Segregation Principle)

    D - Princípio da Inversão de Dependência (Dependency Inversion Principle)

    Cada princípio SOLID visa resolver problemas específicos no desenvolvimento de software, promovendo a coesão, a flexibilidade e a extensibilidade do código.

    image

    Para entender melhor, existe uma diferença entre Programação e Boa Programação. A programação tradicional visa apenas a funcionalidade. A boa programação se baseia nos princípios SOLID. Ela busca ir além da simples funcionalidade e foca na legibilidade, manutenção e escalabilidade do código.

    Um código limpo é caracterizado por várias qualidades. Ele é claro, o que significa que sua intenção é facilmente compreendida por outros desenvolvedores. A simplicidade também é uma característica importante, já que um código simples é mais fácil de manter e menos propenso a erros. 

    Al√©m disso, um c√≥digo limpo √© modular, dividido em pequenos componentes independentes que podem ser reutilizados e testados separadamente. A formata√ß√£o adequada tamb√©m √© crucial para manter um c√≥digo limpo. O uso de nomes descritivos para vari√°veis e fun√ß√Ķes torna o c√≥digo mais leg√≠vel.¬†

    A indenta√ß√£o consistente e o alinhamento adequado de blocos de c√≥digo facilitam a compreens√£o da estrutura do programa. Al√©m disso, a ades√£o a conven√ß√Ķes de nomenclatura, como o CamelCase ou o snake_case, melhora a consist√™ncia do c√≥digo e torna-o mais acess√≠vel a outros desenvolvedores.

    image

    O polimorfismo é um dos pilares da orientação a objetos e desempenha um papel significativo na criação de código limpo. Ele permite que objetos de diferentes classes sejam tratados de maneira uniforme por meio de interfaces e herança. Isso promove o reuso de código e reduz a duplicação.

    Pode-se usar polimorfismo ao substituir estruturas condicionais (ifs) por implementa√ß√Ķes polim√≥rficas. Isso evita blocos de condicionais aninhados complexos. Para isso, pode-se criar classes espec√≠ficas que implementam um mesmo contrato e delegar o comportamento apropriado a essas classes.

    Agora que abordamos esses tópicos, podemos ver como os princípios SOLID se alinham com a criação de código limpo e eficiente. Vamos explorar um exemplo prático de como aplicar essas diretrizes.

    Vamos considerar um exemplo de sistema de pagamento. Na programação tradicional, o processamento de pagamento pode ser realizado com um bloco de condicionais para determinar o método de pagamento e executar a lógica apropriada. Isso pode levar a código confuso e difícil de manter:

    if metodo_pagamento == 'cartao': 
      processar_pagamento_cartao() 
    elif metodo_pagamento == 'paypal': 
      processar_pagamento_paypal() 
    elif metodo_pagamento == 'bitcoin': 
      processar_pagamento_bitcoin()
    

    Agora, vamos aplicar os princ√≠pios SOLID, em particular o Princ√≠pio da Responsabilidade √önica (SRP) e o Princ√≠pio Aberto-Fechado (OCP). Em vez de usar condicionais, criamos classes separadas para cada m√©todo de pagamento, cada uma com uma responsabilidade √ļnica:

    class PagamentoCartao: 
      def processar_pagamento(self): 
      # Lógica de pagamento com cartão 
    class PagamentoPaypal: 
      def processar_pagamento(self): 
      # Lógica de pagamento com PayPal 
    class PagamentoBitcoin: 
      def processar_pagamento(self): 
      # Lógica de pagamento com Bitcoin
    

    Agora, podemos escolher facilmente o método de pagamento desejado sem alterar o código existente, seguindo o Princípio Aberto-Fechado (OCP). Além disso, a lógica de pagamento para cada método está contida em sua própria classe, cumprindo o Princípio da Responsabilidade Única (SRP).

    Essa abordagem torna o código mais legível, extensível e de fácil manutenção, alinhando-se com a regra mais importante do Clean Code: manter o código limpo aplicando os princípios SOLID.

    Em resumo, a regra mais importante do Clean Code está intrinsecamente ligada à aplicação dos princípios SOLID. Ao adotar os princípios SOLID, os desenvolvedores podem criar código limpo que seja mais legível, sustentável e eficiente. 

    image

    Estes princípios promovem a coesão, o baixo acoplamento, a extensibilidade e a simplicidade do código. Através da aplicação dessas diretrizes, o desenvolvimento de software se torna uma tarefa mais organizada e eficaz.

    Portanto, a regra mais importante do Clean Code √© adotar os princ√≠pios SOLID. Isso resulta em sistemas mais confi√°veis, f√°ceis de manter e mais bem adaptados √†s mudan√ßas da programa√ß√£o. Ao seguir essas diretrizes, estar√° no caminho para escrever c√≥digo limpo que atenda aos padr√Ķes de qualidade.

    ūüöÄ https://github.com/mdsjjorge

    Referências:

    1. "Clean Code: A Handbook of Agile Software Craftsmanship" - Robert C. Martin
    2. "Refactoring: Improving the Design of Existing Code" - Martin Fowler
    3. https://www.youtube.com/watch?v=CpfbAfidVeA
    4. https://www.freecodecamp.org/news/solid-design-principles-in-software-development/#:~:text=SOLID%20is%20a%20set%20of,while%20developing%20the%20software%20systems.
    5. https://www.bmc.com/blogs/solid-design-principles/
    6. https://blog.betrybe.com/tecnologia/clean-code/
    7. https://medium.com/@ibraheem.ahmed/good-coding-practices-and-writing-clean-code-b13e710f31ec
    Compartilhe
    Coment√°rios (0)