Writing Code That Lasts - #Magento2Seminar, Utrecht

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

Transcript of Writing Code That Lasts - #Magento2Seminar, Utrecht

Page 1: Writing Code That Lasts - #Magento2Seminar, Utrecht

Writing code that lasts.

Rafael Dohms@rdohms

photo: djandyw.com

#ocforphp

Page 2: Writing Code That Lasts - #Magento2Seminar, Utrecht

Writing code you won’t hate tomorrow.

Rafael Dohms@rdohms

photo: djandyw.com

#ocforphp

Page 3: Writing Code That Lasts - #Magento2Seminar, Utrecht

Rafael Dohms

or @rdohms on twitter

Bella

Page 4: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 5: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 6: Writing Code That Lasts - #Magento2Seminar, Utrecht

photo: Rob Allen (@akrabat)

Page 7: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 8: Writing Code That Lasts - #Magento2Seminar, Utrecht

REWRITEALL THE CODE!

image: hyperboleandahalf

Page 9: Writing Code That Lasts - #Magento2Seminar, Utrecht

Real Developers, SHIP STUFF.

photo: Glyn Lowe Photoworks

Page 10: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 11: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 12: Writing Code That Lasts - #Magento2Seminar, Utrecht

How do we find balance?

photo: Kalexanderson

Page 13: Writing Code That Lasts - #Magento2Seminar, Utrecht

Code has an expiration date

photo: CarbonNYC

Page 14: Writing Code That Lasts - #Magento2Seminar, Utrecht

Code is perishable, it rots.

photo by: massdistraction

Page 15: Writing Code That Lasts - #Magento2Seminar, Utrecht

Code Evolves

photo by: kevin dooley

Page 16: Writing Code That Lasts - #Magento2Seminar, Utrecht

Languages evolve.photo by: raneko

Page 17: Writing Code That Lasts - #Magento2Seminar, Utrecht

You evolve.

photo by: Kaptain Kobold

Page 18: Writing Code That Lasts - #Magento2Seminar, Utrecht

Complexity kills Comprehension

photo: osbornb

Page 19: Writing Code That Lasts - #Magento2Seminar, Utrecht

Bad Design

photo: miskan

Page 20: Writing Code That Lasts - #Magento2Seminar, Utrecht

Bad specs

Page 21: Writing Code That Lasts - #Magento2Seminar, Utrecht

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

photo by: John 'K'

Page 22: Writing Code That Lasts - #Magento2Seminar, Utrecht

The Solution™photo: Ian Sane

Page 23: Writing Code That Lasts - #Magento2Seminar, Utrecht

Improve codemake it easier to comprehend

make it flexible

make it tested

make it easier to replace, refactor

make it not exist

Page 24: Writing Code That Lasts - #Magento2Seminar, Utrecht

Testing

photo by: jeffkrause

Page 25: Writing Code That Lasts - #Magento2Seminar, Utrecht

Good Design Concepts

Page 26: Writing Code That Lasts - #Magento2Seminar, Utrecht

SOLID

Single ResponsibilityOpen and Close

Liskov substitutionInterface SegregationDependency Inversion

Page 27: Writing Code That Lasts - #Magento2Seminar, Utrecht

STUPIDSingleton

Tight CouplingUntestability

Premature OptimizationIndescriptive Naming

Duplication

Page 28: Writing Code That Lasts - #Magento2Seminar, Utrecht

Design Patterns

photo by halloweenstock

Page 29: Writing Code That Lasts - #Magento2Seminar, Utrecht

Package Managers

Page 30: Writing Code That Lasts - #Magento2Seminar, Utrecht

Composer

Page 31: Writing Code That Lasts - #Magento2Seminar, Utrecht

PIEProudly

InventedElsewhere

Page 32: Writing Code That Lasts - #Magento2Seminar, Utrecht

Readability

photo: Morgenland

Page 33: Writing Code That Lasts - #Magento2Seminar, Utrecht

paragraphs

photo: Trossachs Photography

Page 34: Writing Code That Lasts - #Magento2Seminar, Utrecht

whitespace

Page 35: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 36: Writing Code That Lasts - #Magento2Seminar, Utrecht

R&D Team for MIH/Naspers

São PauloCape Town

Page 37: Writing Code That Lasts - #Magento2Seminar, Utrecht

Object Calisthenics

photo by: boston_public_library

Page 38: Writing Code That Lasts - #Magento2Seminar, Utrecht

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.

photo by: boston_public_library

Page 39: Writing Code That Lasts - #Magento2Seminar, Utrecht

Its about perception, not rules or standards

photo by: david_a_l

Page 40: Writing Code That Lasts - #Magento2Seminar, Utrecht

#1 Only one indentation level per method.

photo by: justinliew

Page 41: Writing Code That Lasts - #Magento2Seminar, Utrecht

#2 Do not use else

photo by: justinliew

Page 42: Writing Code That Lasts - #Magento2Seminar, Utrecht
Page 43: Writing Code That Lasts - #Magento2Seminar, Utrecht

#3 Wrap primitive types, if they contain behavior

photo by: justinliew

Page 44: Writing Code That Lasts - #Magento2Seminar, Utrecht

$component->repaint(false);

Page 45: Writing Code That Lasts - #Magento2Seminar, Utrecht

$component->repaint( new Animate(false) );

Page 46: Writing Code That Lasts - #Magento2Seminar, Utrecht

#4 Only one -> per line

photo by: justinliew

Page 47: Writing Code That Lasts - #Magento2Seminar, Utrecht

#5 Do not abbreviate.

photo by: justinliew

Page 48: Writing Code That Lasts - #Magento2Seminar, Utrecht

if($sx >= $sy) { if ($sx > $strSysMatImgW) { $ny = $strSysMatImgW * $sy / $sx; $nx = $strSysMatImgW; } if ($ny > $strSysMatImgH) { $nx = $strSysMatImgH * $sx / $sy; $ny = $strSysMatImgH; }

}

Page 49: Writing Code That Lasts - #Magento2Seminar, Utrecht

#6 Keep your classes small.

photo by: justinliew

Page 50: Writing Code That Lasts - #Magento2Seminar, Utrecht

#7 Limit your instance variables to less then 5

photo by: justinliew

Page 51: Writing Code That Lasts - #Magento2Seminar, Utrecht

#8 Use first class collections

photo by: justinliew

Page 52: Writing Code That Lasts - #Magento2Seminar, Utrecht

#9 Don’t use getters and setters.

photo by: justinliew

Page 53: Writing Code That Lasts - #Magento2Seminar, Utrecht

#10 Document your code.

photo by: justinliew

Page 54: Writing Code That Lasts - #Magento2Seminar, Utrecht

Your turn.

Page 55: Writing Code That Lasts - #Magento2Seminar, Utrecht

Improve yourself!

Page 56: Writing Code That Lasts - #Magento2Seminar, Utrecht

Read lots of code!

Page 57: Writing Code That Lasts - #Magento2Seminar, Utrecht

Write simple code.

Page 58: Writing Code That Lasts - #Magento2Seminar, Utrecht

Try Object Calisthenics for a month.

Page 59: Writing Code That Lasts - #Magento2Seminar, Utrecht

Use someone else’s code.

Page 60: Writing Code That Lasts - #Magento2Seminar, Utrecht

Share bite size libraries.

Page 61: Writing Code That Lasts - #Magento2Seminar, Utrecht

Thank you.

http://slides.doh.ms

http://doh.ms

@rdohms

https://joind.in/talk/745ec