Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clean code - Dicas para escrever um código mai...

Clean code - Dicas para escrever um código mais coeso

Thiago

July 12, 2023
Tweet

More Decks by Thiago

Other Decks in Technology

Transcript

  1. Design Principles 1. SRP 2. OCP 3. LSP 4. ISP

    5. DIP 6. DRY 7. KISS 8. YAGNI
  2. • Tolerante a mudança • Compreensível • Simples de ser

    testado • Fácil de ser mantido • Orgulho Design Principles Design Principles
  3. Um prédio com boa arquitetura, mas com tijolos mal feitos

    não resultará numa boa construção. Por outro lado, mesmo com bons tijolos e arquitetura, caso a interligação entre os tijolos não seja de qualidade, a construção também não será satisfatória. Por isso que os princípios são de grande valia. Design Principles Design Principles
  4. Reúna as coisas que mudam pelas mesmas razões. Separe as

    coisas que mudam por diferentes razões. SRP - Single Responsibility SRP
  5. Cada módulo de software tem um, e apenas um, motivo

    para mudar. SRP - Single Responsibility SRP
  6. SRP

  7. Para sistemas de software serem fáceis de mudar, eles devem

    ser projetados para permitir o comportamento desses sistemas sejam alterados a adicionar novo código, em vez de alterar código. OCP - Open-Closed OCP
  8. OCP

  9. A famosa definição de subtipos de Barbara Liskov, de 1988.

    Em suma, este princípio diz que para construir sistemas de software a partir de partes intercambiáveis, essas partes devem aderir a um contrato que permite que essas partes sejam substituídas uma por outra. LSP - Liskov Substitution LSP
  10. Um programa que usa uma interface não deve ser confundido

    por uma implementação dessa interface. LSP - Liskov Substitution LSP
  11. LSP

  12. LSP

  13. Este princípio aconselha os designers de software a evitar depender

    de coisas que eles não usam. ISP - Segregation Principle ISP
  14. Mantenha os contratos pequenos para que os usuários não acabem

    dependendo de coisas que não precisam. ISP - Segregation Principle ISP
  15. ISP

  16. O código que implementa a política de alto nível não

    deve depender do código que implementa detalhes de baixo nível. Em vez disso, os detalhes devem depender das políticas. DIP - Dependency Principle DIP
  17. Módulos de alto nível não devem depender de detalhes de

    baixo nível. DIP - Dependency Principle DIP
  18. DIP

  19. DIP

  20. O Acrónimo SOLID foi cunhado nos anos 2004, identificado por

    Michael Feathers a possibilidade da criação desse Acrónimo com base nos princípios de diversos profissionais compilados pelo Robert C. Martin e apresentado por volta dos anos 2000s. SOLID SOLID
  21. Todo conhecimento deve ter uma representação única não ambígua e

    autorizada dentro de um sistema. DRY - Don’t Repeat Yourself DRY
  22. O objetivo do DRY é reutilizar o código já escrito

    anteriormente. DRY - Don’t Repeat Yourself DRY
  23. DRY

  24. A simplicidade deve ser um objetivo chave no design, e

    a complexidade desnecessária deve ser evitada KISS - Keep It Simple, Stupid KISS
  25. O princípio do KISS afirma que as coisas funcionam melhor

    se forem mantidos simples em vez de complicados. KISS - Keep It Simple, Stupid KISS
  26. Sempre implemente as coisas quando você realmente precisa delas, nunca

    quando você apenas prevê que precisa delas YAGNI - You Ain’t Gonna Need It YAGNI
  27. Tem como objetivo apagar todo o código desnecessário e se

    concentra nas funcionalidades atuais. YAGNI - You Ain’t Gonna Need It YAGNI
  28. Baixa coesão significa que o sistema não possui uma estrutura

    clara, na qual classes e módulos possuem múltiplas responsabilidades e estão fortemente acoplados, dificultando a compreensão e manutenção do código. Coesão Coesão e acoplamento botão
  29. Alto acoplamento significa que as partes de um programa estão

    muito misturadas e dependem muito umas das outras, o que pode causar confusão e dificuldade para fazer alterações. Acoplamento Coesão e acoplamento botão
  30. Alta coesão e um baixo Acoplamento Coesão e acoplamento botão

    Alta coesão: Classes com responsabilidades únicas Baixo acoplamento: Minimizar o número de dependências entre as classes.
  31. Alta coesão e um baixo Acoplamento Coesão e acoplamento botão

    • Requer um design cuidadoso • Separação de responsabilidades • Abstração adequada para evitar dependências excessivas
  32. Recapitulando • SRP - The Single Responsibility Principle • DRY

    - Don’t Repeat Yourself • DIP - The Dependency Inversion Principle • KISS - Keep It Simple, Stupid • Legibilidade