Writing code
that lasts.
Rafael Dohms

@rdohms
photo: djandyw.com
Writing code 

you won’t hate tomorrow.
Rafael Dohms

@rdohms
photo: djandyw.com
Let me
introduce
you to
someone…
No Tests.
Wrote his own framework.
500 line methods.
Used Singletons!
photo: Rob Allen (@akrabat)
REWRITE
ALL THE CODE!
Real Developers,
SHIP STUFF.
photo: Glyn Lowe Photoworks
How do we find
balance?
photo: Kalexanderson
Code has an
expiration date
photo: CarbonNYC
Code is
perishable, it rots.
photo by: massdistraction
Code Evolves
photo by: kevin dooley
Languages evolve.
photo by: raneko
You evolve.
photo by: Kaptain Kobold
Complexity 

kills
Comprehension
photo: osbornb
Bad Design
photo: miskan
Bad specs
NIH
source: Urban dictionary
photo by: John 'K'
NIH
| nɒt ɪnˈventɪd hɪə |

Not Invented Here —The German art of humiliating any technology,
agricultural product, or (medi...
The Solution™
photo: Ian Sane
Improve code
Improve code
make it easier to comprehend
Improve code
make it easier to comprehend
make it flexible
Improve code
make it easier to comprehend
make it flexible
make it tested
Improve code
make it easier to comprehend
make it flexible
make it tested
make it easier to replace, refactor
Improve code
make it easier to comprehend
make it flexible
make it tested
make it easier to replace, refactor
make it not e...
Good Design
Concepts
SOLID
Single Responsibility

Open/close

Liskov substitution

Interface segregation

Dependency inversion
STUPID
Singleton

Tight Coupling

Untestability

Premature Optimization

Indescriptive Naming

Duplication
Composer
PIE
Proudly

Invented

Elsewhere
guzzle/guzzle
HTTP client for RESTful API clients
morrisonlevi/ardent
A library of collections for PHP
Readability
photo: Morgenland
paragraphs
photo: Trossachs Photography
whitespace
R&D Team for MIH/Naspers
São PauloCape Town
Object
Calisthenics
photo by: boston_public_library
Calisthenics
/ˌkaləsˈTHeniks/
Calisthenics are a form of dynamic exercise consisting of a variety of
simple, often rhythmi...
Its about perception,
not rules or standards photo by: david_a_l
Sunday

12:00
Voyager Room
#1
Only one
indentation level
per method.
photo by: justinliew
#2
Do not 

use else
photo by: justinliew
#3
Wrap primitive
types, if they
contain behavior
photo by: justinliew
#4
Only one 

-> per line
photo by: justinliew
#5
Do not
abbreviate.
photo by: justinliew
#6
Keep your
classes small.
photo by: justinliew
#7
Limit your
instance variables
to less then 5
photo by: justinliew
#8
Use first class
collections
photo by: justinliew
#9
Use getters
and setters.
photo by: justinliew
#10
Document
your code.
photo by: justinliew
Your turn.
Improve
yourself!
Read lots of
code!
Write simple
code.
Try Object Calisthenics
for a month.
Use someone
else’s code.
Share bite size
libraries.
Thank you.
http://slides.doh.ms
http://doh.ms
@rdohms
http://l.doh.ms/oc-links
Video recording
Slides
Books
Resources on 

Object Calisthenics
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Writing code that lasts - JAB14
Upcoming SlideShare
Loading in...5
×

Writing code that lasts - JAB14

12,149

Published on

As developers we write code everyday, only to frown at it a week after that. Why do we have such a hard time with code written by others and ourselves, this raging desire to rewrite everything we see? Writing code that survives the test of time and self judgment is a matter of clarity and simplicity. Let's talk about growing, learning and improving our code with calisthenics, readability and good design.

Published in: Engineering, Software
5 Comments
78 Likes
Statistics
Notes
  • @TaniaAndreaMirandaMoreira com certeza, essa palestra tem coisa relevante para qualquer linguagem. Algumas das regras de Object Calisthenics podem mudar um pouco para python, mas não muita coisa, o resto segue valendo.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • writing code is extremely relevant today. It is definitely something that needs to be more widely taught.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Amigo, fico feliz com seu retorno! Mesmo não sendo do 'mundo do PHP', curti as dicas que no final servem pra toda e qualquer linguagem de programação! Sucesso e vida longa! Abraço.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @undefined Felipe, eu discordo da filosofia 'ter o necessário', pois isso é muito subjetivo. Mas o intuito de OC não são 'regras' e sim sinais e práticas que te levam a avaliar se o seu código realmente esta o mais simples possivel. Isso não aparece nos slides, então sem ver a palestra é fácil achar que estou 'enfiando regras goela abaixo', mas o processo de OC é justamente de mudar sua cultura para uma de fazer as coisas mais simples, e o que eu apresento não são regras, mas sim exercícios que te levam a pensar mais sobre o código.

    Verifique a palestra 'Your code sucks' pois ela entra em mais detalhes sobre as regras, inclusive o porque de usar #9 baseado na falta de accessors no PHP.

    Espero poder repetir estas palestras para o publico brasileiro em breve.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Achei bem bacana a maioria das informações... mas por ex: #1 é leviano acreditar que você pode usar regras como essas, um nível de indentação por método. O método deve ter a quantidade de indentação necessária. #6 o tamanho da classe deve ser equivalente a abstração coesa do que ela representa. #7 digo o mesmo do item #6 a classe deve ter a quantidade de variáveis de instância necessária para representar a abstração para qual ela se propõe. #9 só devem ser usados se necessário, se você pensar bem get e set nem fazem parte da abstração de algum negócio, sabe, ninguém te diz :'faz um get nome no paciente que tá esperando ali na fila'.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
12,149
On Slideshare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
409
Comments
5
Likes
78
Embeds 0
No embeds

No notes for slide

Writing code that lasts - JAB14

  1. 1. Writing code that lasts. Rafael Dohms
 @rdohms photo: djandyw.com
  2. 2. Writing code 
 you won’t hate tomorrow. Rafael Dohms
 @rdohms photo: djandyw.com
  3. 3. Let me introduce you to someone…
  4. 4. No Tests. Wrote his own framework. 500 line methods. Used Singletons!
  5. 5. photo: Rob Allen (@akrabat)
  6. 6. REWRITE ALL THE CODE!
  7. 7. Real Developers, SHIP STUFF. photo: Glyn Lowe Photoworks
  8. 8. How do we find balance? photo: Kalexanderson
  9. 9. Code has an expiration date photo: CarbonNYC
  10. 10. Code is perishable, it rots. photo by: massdistraction
  11. 11. Code Evolves photo by: kevin dooley
  12. 12. Languages evolve. photo by: raneko
  13. 13. You evolve. photo by: Kaptain Kobold
  14. 14. Complexity 
 kills Comprehension photo: osbornb
  15. 15. Bad Design photo: miskan
  16. 16. Bad specs
  17. 17. NIH source: Urban dictionary photo by: John 'K'
  18. 18. 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'
  19. 19. The Solution™ photo: Ian Sane
  20. 20. Improve code
  21. 21. Improve code make it easier to comprehend
  22. 22. Improve code make it easier to comprehend make it flexible
  23. 23. Improve code make it easier to comprehend make it flexible make it tested
  24. 24. Improve code make it easier to comprehend make it flexible make it tested make it easier to replace, refactor
  25. 25. Improve code make it easier to comprehend make it flexible make it tested make it easier to replace, refactor make it not exist
  26. 26. Good Design Concepts
  27. 27. SOLID Single Responsibility
 Open/close
 Liskov substitution
 Interface segregation
 Dependency inversion
  28. 28. STUPID Singleton
 Tight Coupling
 Untestability
 Premature Optimization
 Indescriptive Naming
 Duplication
  29. 29. Composer
  30. 30. PIE Proudly
 Invented
 Elsewhere
  31. 31. guzzle/guzzle HTTP client for RESTful API clients
  32. 32. morrisonlevi/ardent A library of collections for PHP
  33. 33. Readability photo: Morgenland
  34. 34. paragraphs photo: Trossachs Photography
  35. 35. whitespace
  36. 36. R&D Team for MIH/Naspers São PauloCape Town
  37. 37. Object Calisthenics photo by: boston_public_library
  38. 38. 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
  39. 39. Its about perception, not rules or standards photo by: david_a_l
  40. 40. Sunday
 12:00 Voyager Room
  41. 41. #1 Only one indentation level per method. photo by: justinliew
  42. 42. #2 Do not 
 use else photo by: justinliew
  43. 43. #3 Wrap primitive types, if they contain behavior photo by: justinliew
  44. 44. #4 Only one 
 -> per line photo by: justinliew
  45. 45. #5 Do not abbreviate. photo by: justinliew
  46. 46. #6 Keep your classes small. photo by: justinliew
  47. 47. #7 Limit your instance variables to less then 5 photo by: justinliew
  48. 48. #8 Use first class collections photo by: justinliew
  49. 49. #9 Use getters and setters. photo by: justinliew
  50. 50. #10 Document your code. photo by: justinliew
  51. 51. Your turn.
  52. 52. Improve yourself!
  53. 53. Read lots of code!
  54. 54. Write simple code.
  55. 55. Try Object Calisthenics for a month.
  56. 56. Use someone else’s code.
  57. 57. Share bite size libraries.
  58. 58. Thank you. http://slides.doh.ms http://doh.ms @rdohms
  59. 59. http://l.doh.ms/oc-links Video recording Slides Books Resources on 
 Object Calisthenics
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×