Slide 1

Slide 1 text

AGAINST1 the journey of a developer with SOLID principles against the urge to use many standard or not think about them ONE @helmedeiros

Slide 2

Slide 2 text

once upon a time…

Slide 3

Slide 3 text

framework MV* princípios design patterns

Slide 4

Slide 4 text

a-gi-li-ty |əˈjilitē| Is about building software in tiny increments

Slide 5

Slide 5 text

how to design a… Software with a good structure? Software that is flexible? Software that is maintainable? Software that is reusable? who knows who knows who knows who knows

Slide 6

Slide 6 text

If you build your project in tiny increments, aren’t you going to miss the whole picture?

Slide 7

Slide 7 text

agile design design smells principles

Slide 8

Slide 8 text

software project
 is an abstract concept

Slide 9

Slide 9 text

software project |ˈsôftˌwe(ə)r ˈpräjˌekt, -ikt| It has to do with the overall program design, as well as the detailed structure of each module, class, and method.

Slide 10

Slide 10 text

“If you are lucky, you start a project with a clear picture of what you want the system to be. If you are luckier still, the clarity of that design makes it to the first release.” - Robert C. Martin

Slide 11

Slide 11 text

agile design design smells principles

Slide 12

Slide 12 text

then something goes wrong
 software starts to rot

Slide 13

Slide 13 text

how to detect it… before the last responsible moment? without too much precaution? allowing it to change?

Slide 14

Slide 14 text

RIGIDITY: The design is difficult to change. 1

Slide 15

Slide 15 text

FRAGILITY: The design is easy to break. 2

Slide 16

Slide 16 text

IMMOBILITY: The design is difficult to reuse. 3

Slide 17

Slide 17 text

VISCOSITY: It is difficult to do the right thing. 4

Slide 18

Slide 18 text

NEEDLESS COMPLEXITY: Overdesign. 5

Slide 19

Slide 19 text

NEEDLESS REPETITION: Mouse abuse. 6

Slide 20

Slide 20 text

OPACITY: Disorganized expression. 7

Slide 21

Slide 21 text

why software rots… change in ways that the initial design did not anticipate changes need to be made quickly developers who aren’t familiar with original philosophy

Slide 22

Slide 22 text

requirements changes
 our designs and practices have been failing

Slide 23

Slide 23 text

agile design design smells principles

Slide 24

Slide 24 text

continuos application
 to improve the structure and readability of the software

Slide 25

Slide 25 text

iterativamente visando… simple code cleaning code expressive code moderate moderate moderate

Slide 26

Slide 26 text

SRP: The Single-Responsibility Principle S

Slide 27

Slide 27 text

OCP: The Open/Closed Principle O

Slide 28

Slide 28 text

LSP: The Liskov Substitution Principle L

Slide 29

Slide 29 text

ISP: The Interface Segregation Principle I

Slide 30

Slide 30 text

DIP: The Dependency-Inversion Principle D

Slide 31

Slide 31 text

“  Agile  teams  apply  principles  only  to  solve  smells.   They  are  not  a  perf7me  to  be  liberally  sca9ered  all   over  the  system.  “   - Robert C. Martin

Slide 32

Slide 32 text

AGAINST1 the journey of a developer with SOLID principles against the urge to use many standard or not think about them ONE @helmedeiros