“Writing Code That Lasts” … Or Writing Code You Won’t Hate Tomorrow


The Presentation inside:

Slide 0

photo: djandyw.com Writing code that lasts. #ocforphp Rafael Dohms
 @rdohms


Slide 1

photo: djandyw.com Writing code 
 you won’t hate tomorrow. #ocforphp Rafael Dohms
 @rdohms


Slide 2

Let me introduce you to someone…


Slide 3


Slide 4


Slide 5

No Tests. shhh.. don’t tell Grumpy. Wrote his own framework. .. and used it. Used Singletons! .. and every other anti-pattern out there. 500 line methods. … not even methods, they were functions


Slide 6

photo: Rob Allen (@akrabat)


Slide 7


Slide 8

REWRITE ALL THE CODE! image: hyperboleandahalf


Slide 9

photo: Glyn Lowe Photoworks Real Developers, SHIP STUFF.


Slide 10


Slide 11


Slide 12


Slide 13

photo: Kalexanderson How do we find balance?


Slide 14

photo: CarbonNYC Code has an expiration date


Slide 15

photo by: massdistraction Code is perishable, it rots.


Slide 16

photo by: kevin dooley Code Evolves


Slide 17

Languages evolve. photo by: raneko


Slide 18

photo by: Kaptain Kobold You evolve.


Slide 19

photo: osbornb Complexity 
 kills Comprehension


Slide 20

photo: miskan Bad Design


Slide 21

Bad specs


Slide 22

photo by: John 'K' NIH source: Urban dictionary


Slide 23

photo by: John 'K' NIH | nɒt ɪnˈventɪd hɪə |
 Not Invented Here —The German art of humiliating any technology, agricultural product, or (medical) scientific work that has not been invented or produced in Germany, Switzerland, or Austria. source: Urban dictionary


Slide 24

photo: Ian Sane The Solution™


Slide 25

Improve code


Slide 26

make it easier to comprehend Improve code


Slide 27

make it flexible make it easier to comprehend Improve code


Slide 28

make it flexible make it tested make it easier to comprehend Improve code


Slide 29

make it flexible make it tested make it easier to comprehend Improve code make it easier to replace, refactor


Slide 30

make it flexible make it tested make it easier to comprehend Improve code make it not exist make it easier to replace, refactor


Slide 31

Testing photo by: jeffkrause


Slide 32

Good Design Concepts


Slide 33

photo by j_regan SOLID Single Responsibility
 Open and Close
 Liskov substitution
 Interface Segregation
 Dependency Inversion


Slide 34

photo by lofink STUPID Singleton
 Tight Coupling
 Untestability
 Premature Optimization
 Indescriptive Naming
 Duplication


Slide 35

photo by halloweenstock Design Patterns


Slide 36

Composer


Slide 37

PIE Proudly
 Invented
 Elsewhere


Slide 38

photo by j_regan guzzlehttp/guzzle HTTP client for RESTful API clients


Slide 39

league/tactician A flexible CommandBus implementation


Slide 40

Readability photo: Morgenland


Slide 41

photo: Trossachs Photography paragraphs


Slide 42

whitespace


Slide 43


Slide 44

Cape Town São Paulo R&D Team for MIH/Naspers


Slide 45

Object Calisthenics photo by: boston_public_library


Slide 46

photo by: boston_public_library Calisthenics /ˌkaləsˈTHeniks/ Calisthenics are a form of dynamic exercise consisting of a variety of simple, often rhythmical, movements, generally using minimal equipment or apparatus.


Slide 47

Its about perception, not rules or standards photo by: david_a_l


Slide 48

photo by: justinliew #1 Only one indentation level per method.


Slide 49

photo by: justinliew #2 Do not 
 use else


Slide 50


Slide 51


Slide 52


Slide 53

photo by: justinliew #3 Wrap primitive types, if they contain behavior


Slide 54

photo by: justinliew #4 Only one 
 -> per line


Slide 55

photo by: justinliew #5 Do not abbreviate.


Slide 56

photo by: justinliew #6 Keep your classes small.


Slide 57

photo by: justinliew #7 Limit your instance variables to less then 5


Slide 58

photo by: justinliew #8 Use first class collections


Slide 59

photo by: justinliew #9 Use getters and setters.


Slide 60

photo by: justinliew #10 Document your code.


Slide 61

Your turn.


Slide 62

Improve yourself!


Slide 63

Read lots of code!


Slide 64

Write simple code.


Slide 65

Try Object Calisthenics for a month.


Slide 66

Use someone else’s code.


Slide 67

Share bite size libraries.


Slide 68

http://tech.sym.bid/jobs we are hiring! Thank you. @rdohms http://doh.ms http://slides.doh.ms


Slide 69

Video recording Resources on 
 Object Calisthenics Books Slides http://l.doh.ms/oc-material


Slide 70


×

HTML:





Ссылка: