Writing code you won't hate tomorrow

Preview:

DESCRIPTION

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.

Citation preview

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)

REWRITEALL 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 (medical) scientific work that has not been

invented or produced in Germany, Switzerland, or Austria.source: Urban dictionary

photo by: John 'K'

The Solution™photo: Ian Sane

Improve code

Improve codemake it easier to comprehend

Improve codemake it easier to comprehend

make it flexible

Improve codemake it easier to comprehend

make it flexible

make it tested

Improve codemake it easier to comprehend

make it flexible

make it tested

make it easier to replace, refactor

Improve codemake it easier to comprehend

make it flexible

make it tested

make it easier to replace, refactor

make it not exist

Good Design Concepts

SOLID

Single ResponsibilityOpen and Close

Liskov substitutionInterface SegregationDependency Inversion

photo by j_regan

photo by lofink

STUPIDSingleton

Tight CouplingUntestability

Premature OptimizationIndescriptive Naming

Duplication

Design Patterns

photo by halloweenstock

Composer

PIEProudly

InventedElsewhere

guzzle/guzzleHTTP client for RESTful API clients

photo by j_regan

morrisonlevi/ardentA 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 rhythmical, movements, generally using minimal

equipment or apparatus.

photo by: boston_public_library

Its about perception, not rules or standards

photo by: david_a_l

#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

we are hiring!

https://joind.in/11594

please rate me!

Recommended