$30 off During Our Annual Pro Sale. View Details »

A craftsman’s guide to designing clean architecture

A craftsman’s guide to designing clean architecture

In this talk, Software Craftsman Marcus Biel describes how to design a Clean Architecture

Marcus Biel

April 07, 2018
Tweet

More Decks by Marcus Biel

Other Decks in Programming

Transcript

  1. Marcus Biel, Software Craftsman
    Moscow | 7. April 2018
    A craftsman’s guide to
    designing clean architecture

    View Slide

  2. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    About me
    Clean Code Evangelist • Founder of Clean Code
    Academy • Public Speaker • Author • Java Influencer
    • JCP Member • Clean Code Coach • Java
    Consultant
    @MarcusBiel
    [email protected]

    View Slide

  3. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining a Clean Architecture

    View Slide

  4. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining a Clean Architecture

    View Slide

  5. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining a Clean Architecture

    View Slide

  6. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining a Clean Architecture
    MODULES
    PACKAGES
    CLASSES
    METHODS

    View Slide

  7. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining a Clean Architecture
    Domain
    Infrastructure
    HTTPS
    REST
    SOAP

    View Slide

  8. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Foundation of a Clean Architecture
    ‣ Coupling and Cohesion
    ‣ Other Building Blocks

    View Slide

  9. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Coupling
    Tight Coupling Loose Coupling

    View Slide

  10. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Coupling
    Tight Coupling Loose Coupling

    View Slide

  11. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Coupling
    Tight Loose

    View Slide

  12. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Coupling Strength
    ‣ Distance of the Components
    ‣ Type of Coupling
    ‣ Timing of Coupling

    View Slide

  13. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Distance of the Components
    MODULES
    PACKAGES
    CLASSES
    METHODS

    View Slide

  14. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Distance of the Components

    View Slide

  15. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Distance of the Components

    View Slide

  16. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Distance of the Components

    View Slide

  17. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Distance of the Components

    View Slide

  18. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Type of Coupling

    View Slide

  19. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Timing of Coupling

    View Slide

  20. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Cohesion
    Low Cohesion High Cohesion

    View Slide

  21. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Cohesion
    Low Cohesion High Cohesion

    View Slide

  22. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Low High
    Defining Cohesion

    View Slide

  23. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Cohesion
    GeneralUtils
    create(Customer)
    validate(Car)
    write(Report)

    View Slide

  24. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Defining Cohesion
    CustomerService
    sellTo(Customer)
    invoice(Customer)
    help(Customer)

    View Slide

  25. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    help(Customer)
    invoice(Customer)
    Defining Cohesion
    CustomerSales
    sellTo(Customer)
    CustomerAccounting
    CustomerService

    View Slide

  26. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Cohesion Types
    ‣ Logical Cohesion
    ‣ Business Cohesion

    View Slide

  27. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Cohesion Key Point
    High Cohesion requires in-depth knowledge
    of the domain.

    View Slide

  28. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Foundation of a Clean Architecture
    ‣ Coupling and Cohesion
    ‣ Other Building Blocks

    View Slide

  29. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Other Building Blocks
    ‣ Encapsulation
    ‣ Naming
    ‣ Size

    View Slide

  30. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Encapsulation
    technically enforces of how the
    system should be used
    Getters and Setters violate
    encapsulation.
    Use package private more often!
    http://bit.ly/EvilGettersAndSetters

    View Slide

  31. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Other Building Blocks
    ‣ Encapsulation
    ‣ Naming
    ‣ Size

    View Slide

  32. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Clean Names Key Points
    Clean names drive high cohesion 

    (Customer, AccountNumber)
    Use service pattern judiciously
    Clean names are team work
    Rename on new insights

    View Slide

  33. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Other Building Blocks
    ‣ Encapsulation
    ‣ Naming
    ‣ Size

    View Slide

  34. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    Size Key Points
    MODULES
    PACKAGES
    CLASSES
    METHODS

    View Slide

  35. Copyright 2018 Marcus Biel
    https://cleancodeacademy.com
    What is Clean Architecture?
    I would advise students to pay more attention to
    the fundamental ideas rather than the latest
    technology. The technology will be out-of-date
    before they graduate. Fundamental ideas never get
    out of date.
    — David L. Parnas


    View Slide

  36. Marcus Biel, Software Craftsman
    Moscow | 7. April 2018
    A craftsman’s guide to
    designing clean architecture

    View Slide