SlideShare una empresa de Scribd logo
1 de 22
Clean Code urice
• dobri programerji ne obstajajo!
• flamewars appreciated
Clean == pedantry?
• do_something vs. doSomething
• foo[‘bar’] vs. foo[ ‘bar’ ] vs. foo [ ‘bar’ ]
• if something { do_it } vs. if something
                               {
   if something                    do_it()
                   vs.         }
   {
           do_it()
   }
Kaj je ‘clean’?

• elegantnost
• berljivost
• DRY+KISS+obvious
Zakaj?
• slaba koda vedno bo
• coding == reading
•b
• Poimenovanje entitet
• Izraznost funkcij
• One lang per doc
• Formatting
• Objects || data
• Errors
1. Poimenovanje

• izrazen naravni jezik
• domensko izrazoslovje
• searchable!
1. Poimenovanje - avoid

• hungarian notation (phnUsr)
• type ‘hinting’ (UserList)
• mental mapping
• puns/jokes/stupid-stuff (HolyHandGrenade)
2. Funkcije

• almost functional programming
• single responsibility principle
• samo! en abstrakcijski nivo
2. Funkcije

• malo argumentov
• brez flag argumentov!
• brez stranskih ucinkov
3. Komentarji

• One Language Per Document!
• the good
• the bad
• the ugly
3. Komentarji - bad

• don’t mumble
• neuporabni komentarji
• obvezni komentarji
• javadoc v privat kodi
• position markers
3. Komentarji - good

• API javadoc
• razlaga namena
• warnings
• TODO
3. Komentarji - ugly
4. Formatting

• not the pedantry!
• vertical formatting
• horizontal formatting
4. Formatting - vertical

• newspaper analogy
• breezy
• vertical density/distance
• top -> bottom
4. Formatting -
          horizontal

• short lines
• alignment je samo za assembler
• indentation
4. Formatting - fin
5. Objects || data

• abstract everything
• disguise internals
• brez seterjev in geterjev
• law of Demeter
5. Data transfer objects

• brez metod
• vse je public
• work-around kjer ni named arguments
• cudne podatke abstrahiramo v znan objekt
6. Error handling

• napaka je dogodek, ne stanje -> exceptions
• ne vracajmo null vrednosti
• errorje pohandlamo kjer jih lahko, ostali
  nivoji naj se z njimi ne ukvarjajo

Más contenido relacionado

Destacado

Aquest Nadal Llegeix! Bones festes!
Aquest Nadal Llegeix! Bones festes!Aquest Nadal Llegeix! Bones festes!
Aquest Nadal Llegeix! Bones festes!Perfil St Vicenç
 
Hybrid Animals Project
Hybrid  Animals ProjectHybrid  Animals Project
Hybrid Animals Projectnatashawesley
 
presentasi matematika
presentasi matematikapresentasi matematika
presentasi matematikaarhie
 
Killers Presentation
Killers PresentationKillers Presentation
Killers Presentationguestce20c0
 
Insertar hipervinculos en_mensajes
Insertar hipervinculos en_mensajesInsertar hipervinculos en_mensajes
Insertar hipervinculos en_mensajesUNED
 
Empire.burmese kingdom.2014
Empire.burmese kingdom.2014Empire.burmese kingdom.2014
Empire.burmese kingdom.2014Zaw Aung
 
Eucatex apres 2_t15_pt
Eucatex apres 2_t15_ptEucatex apres 2_t15_pt
Eucatex apres 2_t15_ptEucatexRI
 
Schubert, "Ave Maria" - Mirela Zafiri, sopran
Schubert, "Ave Maria" - Mirela Zafiri, sopranSchubert, "Ave Maria" - Mirela Zafiri, sopran
Schubert, "Ave Maria" - Mirela Zafiri, sopranLiviu Craciun
 
Power Point Grup 1 DelinqüèNcia Connectada.
Power Point Grup 1 DelinqüèNcia Connectada.Power Point Grup 1 DelinqüèNcia Connectada.
Power Point Grup 1 DelinqüèNcia Connectada.guestab75b5
 
Tres Quarts Pac4
Tres Quarts Pac4Tres Quarts Pac4
Tres Quarts Pac4Manel
 
Eco.empresa
Eco.empresaEco.empresa
Eco.empresaClot
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativogc_navarro
 
Oferta educativa para titiribi
Oferta educativa para titiribiOferta educativa para titiribi
Oferta educativa para titiribibibliotecatitiribi
 

Destacado (20)

Mis Deseos
Mis DeseosMis Deseos
Mis Deseos
 
Aquest Nadal Llegeix! Bones festes!
Aquest Nadal Llegeix! Bones festes!Aquest Nadal Llegeix! Bones festes!
Aquest Nadal Llegeix! Bones festes!
 
Hybrid Animals Project
Hybrid  Animals ProjectHybrid  Animals Project
Hybrid Animals Project
 
presentasi matematika
presentasi matematikapresentasi matematika
presentasi matematika
 
Killers Presentation
Killers PresentationKillers Presentation
Killers Presentation
 
Insertar hipervinculos en_mensajes
Insertar hipervinculos en_mensajesInsertar hipervinculos en_mensajes
Insertar hipervinculos en_mensajes
 
Campos Clínicos
Campos ClínicosCampos Clínicos
Campos Clínicos
 
Empire.burmese kingdom.2014
Empire.burmese kingdom.2014Empire.burmese kingdom.2014
Empire.burmese kingdom.2014
 
Ppblog
PpblogPpblog
Ppblog
 
12.12.2009
12.12.200912.12.2009
12.12.2009
 
Eucatex apres 2_t15_pt
Eucatex apres 2_t15_ptEucatex apres 2_t15_pt
Eucatex apres 2_t15_pt
 
Schubert, "Ave Maria" - Mirela Zafiri, sopran
Schubert, "Ave Maria" - Mirela Zafiri, sopranSchubert, "Ave Maria" - Mirela Zafiri, sopran
Schubert, "Ave Maria" - Mirela Zafiri, sopran
 
Power Point Grup 1 DelinqüèNcia Connectada.
Power Point Grup 1 DelinqüèNcia Connectada.Power Point Grup 1 DelinqüèNcia Connectada.
Power Point Grup 1 DelinqüèNcia Connectada.
 
Tres Quarts Pac4
Tres Quarts Pac4Tres Quarts Pac4
Tres Quarts Pac4
 
Eco.empresa
Eco.empresaEco.empresa
Eco.empresa
 
Fotos Expectaculares Taller Moodle... Barquisimeto
Fotos Expectaculares Taller Moodle... BarquisimetoFotos Expectaculares Taller Moodle... Barquisimeto
Fotos Expectaculares Taller Moodle... Barquisimeto
 
Taller 1 de carolyn
Taller 1 de carolynTaller 1 de carolyn
Taller 1 de carolyn
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativo
 
Oferta educativa para titiribi
Oferta educativa para titiribiOferta educativa para titiribi
Oferta educativa para titiribi
 
Abril
AbrilAbril
Abril
 

Clean Code Urice 2k9

  • 2. • dobri programerji ne obstajajo! • flamewars appreciated
  • 3. Clean == pedantry? • do_something vs. doSomething • foo[‘bar’] vs. foo[ ‘bar’ ] vs. foo [ ‘bar’ ] • if something { do_it } vs. if something { if something do_it() vs. } { do_it() }
  • 4. Kaj je ‘clean’? • elegantnost • berljivost • DRY+KISS+obvious
  • 5. Zakaj? • slaba koda vedno bo • coding == reading •b
  • 6.
  • 7. • Poimenovanje entitet • Izraznost funkcij • One lang per doc • Formatting • Objects || data • Errors
  • 8. 1. Poimenovanje • izrazen naravni jezik • domensko izrazoslovje • searchable!
  • 9. 1. Poimenovanje - avoid • hungarian notation (phnUsr) • type ‘hinting’ (UserList) • mental mapping • puns/jokes/stupid-stuff (HolyHandGrenade)
  • 10. 2. Funkcije • almost functional programming • single responsibility principle • samo! en abstrakcijski nivo
  • 11. 2. Funkcije • malo argumentov • brez flag argumentov! • brez stranskih ucinkov
  • 12. 3. Komentarji • One Language Per Document! • the good • the bad • the ugly
  • 13. 3. Komentarji - bad • don’t mumble • neuporabni komentarji • obvezni komentarji • javadoc v privat kodi • position markers
  • 14. 3. Komentarji - good • API javadoc • razlaga namena • warnings • TODO
  • 16. 4. Formatting • not the pedantry! • vertical formatting • horizontal formatting
  • 17. 4. Formatting - vertical • newspaper analogy • breezy • vertical density/distance • top -> bottom
  • 18. 4. Formatting - horizontal • short lines • alignment je samo za assembler • indentation
  • 20. 5. Objects || data • abstract everything • disguise internals • brez seterjev in geterjev • law of Demeter
  • 21. 5. Data transfer objects • brez metod • vse je public • work-around kjer ni named arguments • cudne podatke abstrahiramo v znan objekt
  • 22. 6. Error handling • napaka je dogodek, ne stanje -> exceptions • ne vracajmo null vrednosti • errorje pohandlamo kjer jih lahko, ostali nivoji naj se z njimi ne ukvarjajo