Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

O caminho para o código mais sustentável e de alta qualidade: 8 princípios-chave Thiago Bomfim

Slide 3

Slide 3 text

Sumário 1. SRP 2. OCP 3. LSP 4. ISP 5. DIP 6. DRY 7. KISS 8. YAGNI

Slide 4

Slide 4 text

Design Principles Design principles 01

Slide 5

Slide 5 text

● Tolerante a mudança ● Compreensível ● Simples de ser testado ● Fácil de ser mantido ● Orgulho Design Principles Design Principles

Slide 6

Slide 6 text

Um prédio com boa arquitetura, mas com tijolos mal feitos não resultará numa boa construção. Design Principles Design Principles 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.

Slide 7

Slide 7 text

Design Principles Design Principles

Slide 8

Slide 8 text

Design Principles Design Principles

Slide 9

Slide 9 text

Design Principles Design Principles

Slide 10

Slide 10 text

Design Principles

Slide 11

Slide 11 text

SRP The Single Responsibility Principle 02

Slide 12

Slide 12 text

Reúna as coisas que mudam pelas mesmas razões. Separe as coisas que mudam por diferentes razões. SRP - Single Responsibility SRP

Slide 13

Slide 13 text

Cada módulo de software tem um, e apenas um, motivo para mudar. SRP - Single Responsibility SRP

Slide 14

Slide 14 text

SRP

Slide 15

Slide 15 text

OCP The Open-Closed Principle 03

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Um Módulo deve estar aberto para extensão, mas fechado para modificação. OCP - Open-Closed OCP

Slide 18

Slide 18 text

OCP

Slide 19

Slide 19 text

LSP The Liskov Substitution Principle 04

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Um programa que usa uma interface não deve ser confundido por uma implementação dessa interface. LSP - Liskov Substitution LSP

Slide 22

Slide 22 text

LSP

Slide 23

Slide 23 text

LSP

Slide 24

Slide 24 text

ISP The Interface Segregation Principle 05

Slide 25

Slide 25 text

Este princípio aconselha os designers de software a evitar depender de coisas que eles não usam. ISP - Segregation Principle ISP

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

ISP

Slide 28

Slide 28 text

DIP The Dependency Inversion Principle 06

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Módulos de alto nível não devem depender de detalhes de baixo nível. DIP - Dependency Principle DIP

Slide 31

Slide 31 text

DIP

Slide 32

Slide 32 text

DIP

Slide 33

Slide 33 text

SOLID 07 SOLID

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

SOLID

Slide 36

Slide 36 text

SOLID

Slide 37

Slide 37 text

SOLID

Slide 38

Slide 38 text

DRY 08 DRY

Slide 39

Slide 39 text

Todo conhecimento deve ter uma representação única não ambígua e autorizada dentro de um sistema. DRY - Don’t Repeat Yourself DRY

Slide 40

Slide 40 text

O objetivo do DRY é reutilizar o código já escrito anteriormente. DRY - Don’t Repeat Yourself DRY

Slide 41

Slide 41 text

DRY

Slide 42

Slide 42 text

KISS 09 KISS

Slide 43

Slide 43 text

A simplicidade deve ser um objetivo chave no design, e a complexidade desnecessária deve ser evitada KISS - Keep It Simple, Stupid KISS

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

KISS

Slide 46

Slide 46 text

KISS

Slide 47

Slide 47 text

YAGNI 10 YAGNI

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

Tem como objetivo apagar todo o código desnecessário e se concentra nas funcionalidades atuais. YAGNI - You Ain’t Gonna Need It YAGNI

Slide 50

Slide 50 text

YAGNI

Slide 51

Slide 51 text

YAGNI

Slide 52

Slide 52 text

Recapitulando 11 Recapitulando

Slide 53

Slide 53 text

1. SRP - The Single Responsibility Principle 2. OCP - The Open-Closed Principle 3. LSP - The Liskov Substitution Principle 4. ISP - The Interface Segregation Principle 5. DIP - The Dependency Inversion Principle 6. DRY - Don’t Repeat Yourself 7. KISS - Keep It Simple, Stupid 8. YAGNI - You Ain’t Gonna Need It Recapitulando

Slide 54

Slide 54 text

Clean Code A Handbook of Agile Software Craftsmanship - Robert Cecil Martin. Recapitulando

Slide 55

Slide 55 text

The Clean Coder A code of Conduct for Professional Programmers - Robert Cecil Martin Recapitulando

Slide 56

Slide 56 text

The Pragmatic Programmer - Andy Hunt, Dave Thomas Recapitulando

Slide 57

Slide 57 text

Test-Driven Java Development - Viktor Farcic, Alex Garcia Recapitulando

Slide 58

Slide 58 text

Extreme Programming Explained - Kent Beck, Cynthia Andres Recapitulando

Slide 59

Slide 59 text

https://www.linkedin.com/in/thiagobfim/ https://github.com/ThiagoBfim Recapitulando

Slide 60

Slide 60 text

No content