writing code that lasts - #magento2seminar, utrecht
TRANSCRIPT
![Page 1: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/1.jpg)
Writing code that lasts.
Rafael Dohms@rdohms
photo: djandyw.com
#ocforphp
![Page 2: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/2.jpg)
Writing code you won’t hate tomorrow.
Rafael Dohms@rdohms
photo: djandyw.com
#ocforphp
![Page 3: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/3.jpg)
Rafael Dohms
or @rdohms on twitter
Bella
![Page 4: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/4.jpg)
![Page 5: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/5.jpg)
![Page 6: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/6.jpg)
photo: Rob Allen (@akrabat)
![Page 7: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/7.jpg)
![Page 8: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/8.jpg)
REWRITEALL THE CODE!
image: hyperboleandahalf
![Page 9: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/9.jpg)
Real Developers, SHIP STUFF.
photo: Glyn Lowe Photoworks
![Page 10: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/10.jpg)
![Page 11: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/11.jpg)
![Page 12: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/12.jpg)
How do we find balance?
photo: Kalexanderson
![Page 13: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/13.jpg)
Code has an expiration date
photo: CarbonNYC
![Page 14: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/14.jpg)
Code is perishable, it rots.
photo by: massdistraction
![Page 15: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/15.jpg)
Code Evolves
photo by: kevin dooley
![Page 16: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/16.jpg)
Languages evolve.photo by: raneko
![Page 17: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/17.jpg)
You evolve.
photo by: Kaptain Kobold
![Page 18: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/18.jpg)
Complexity kills Comprehension
photo: osbornb
![Page 19: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/19.jpg)
Bad Design
photo: miskan
![Page 20: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/20.jpg)
Bad specs
![Page 21: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/22.jpg)
The Solution™photo: Ian Sane
![Page 23: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/24.jpg)
Testing
photo by: jeffkrause
![Page 25: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/25.jpg)
Good Design Concepts
![Page 26: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/26.jpg)
SOLID
Single ResponsibilityOpen and Close
Liskov substitutionInterface SegregationDependency Inversion
![Page 27: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/27.jpg)
STUPIDSingleton
Tight CouplingUntestability
Premature OptimizationIndescriptive Naming
Duplication
![Page 28: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/28.jpg)
Design Patterns
photo by halloweenstock
![Page 29: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/29.jpg)
Package Managers
![Page 30: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/30.jpg)
Composer
![Page 31: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/31.jpg)
PIEProudly
InventedElsewhere
![Page 32: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/32.jpg)
Readability
photo: Morgenland
![Page 33: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/33.jpg)
paragraphs
photo: Trossachs Photography
![Page 34: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/34.jpg)
whitespace
![Page 35: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/35.jpg)
![Page 36: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/36.jpg)
R&D Team for MIH/Naspers
São PauloCape Town
![Page 37: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/37.jpg)
Object Calisthenics
photo by: boston_public_library
![Page 38: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/39.jpg)
Its about perception, not rules or standards
photo by: david_a_l
![Page 40: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/40.jpg)
#1 Only one indentation level per method.
photo by: justinliew
![Page 41: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/41.jpg)
#2 Do not use else
photo by: justinliew
![Page 42: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/42.jpg)
![Page 43: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/43.jpg)
#3 Wrap primitive types, if they contain behavior
photo by: justinliew
![Page 44: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/44.jpg)
$component->repaint(false);
![Page 45: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/45.jpg)
$component->repaint( new Animate(false) );
![Page 46: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/46.jpg)
#4 Only one -> per line
photo by: justinliew
![Page 47: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/47.jpg)
#5 Do not abbreviate.
photo by: justinliew
![Page 48: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/48.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/49.jpg)
#6 Keep your classes small.
photo by: justinliew
![Page 50: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/50.jpg)
#7 Limit your instance variables to less then 5
photo by: justinliew
![Page 51: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/51.jpg)
#8 Use first class collections
photo by: justinliew
![Page 52: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/52.jpg)
#9 Don’t use getters and setters.
photo by: justinliew
![Page 53: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/53.jpg)
#10 Document your code.
photo by: justinliew
![Page 54: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/54.jpg)
Your turn.
![Page 55: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/55.jpg)
Improve yourself!
![Page 56: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/56.jpg)
Read lots of code!
![Page 57: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/57.jpg)
Write simple code.
![Page 58: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/58.jpg)
Try Object Calisthenics for a month.
![Page 59: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/59.jpg)
Use someone else’s code.
![Page 60: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/60.jpg)
Share bite size libraries.
![Page 61: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/61.jpg)
Thank you.
http://slides.doh.ms
http://doh.ms
@rdohms
https://joind.in/talk/745ec
![Page 62: Writing Code That Lasts - #Magento2Seminar, Utrecht](https://reader036.vdocuments.us/reader036/viewer/2022070513/588929f31a28ab77528b6c51/html5/thumbnails/62.jpg)
http://l.doh.ms/oc-material
Video recording
Slides
Books
Resources on Object Calisthenics