Top Banner
Ola.
41

Thoughtworks Brazil, Code Quality

Jun 24, 2015

Download

Technology

Nigel Fernandes

Talk to TW'ers in Brazil, focussing on code quality and understanding what that means.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Thoughtworks Brazil, Code Quality

Ola.  

Page 2: Thoughtworks Brazil, Code Quality

You’re  making  me    refactor.  

You  won’t  like  me  when  I  refactor  

Page 3: Thoughtworks Brazil, Code Quality
Page 4: Thoughtworks Brazil, Code Quality

Refactoring?  

Page 5: Thoughtworks Brazil, Code Quality

ThoughtWorks  

a  change  made  to  the  internal  structure  of  so=ware  to  make  it  easier  to  understand  and  cheaper  

to  modify  without  changing  its  observable  behavior  

Page 6: Thoughtworks Brazil, Code Quality
Page 7: Thoughtworks Brazil, Code Quality

 Don't  touch  anything  that  doesn't  have  coverage.  

Otherwise,  you're  not  refactoring;  you're  just  changing  shit  

Page 8: Thoughtworks Brazil, Code Quality

ThoughtWorks  

a  change  made  to  the  internal  structure  of  so=ware  to  make  it  

easier  to  understand  and  cheaper  to  modify  without  changing  its  observable  behavior  

Page 9: Thoughtworks Brazil, Code Quality

SomeHmes  it  just  feels  right.  

Page 10: Thoughtworks Brazil, Code Quality
Page 11: Thoughtworks Brazil, Code Quality
Page 12: Thoughtworks Brazil, Code Quality
Page 13: Thoughtworks Brazil, Code Quality

Step  1:  Measure  the  

toxicity.  

Page 14: Thoughtworks Brazil, Code Quality
Page 15: Thoughtworks Brazil, Code Quality

Smells  in  the  code  

Page 16: Thoughtworks Brazil, Code Quality

CyclomaHc  Complexity  

5  to  7  is  decent  for  most  ruby  code  

Page 17: Thoughtworks Brazil, Code Quality

Saikuro  

Page 18: Thoughtworks Brazil, Code Quality

Assignments,  Branches,  Calls    with  Flog  

Watch  for  scores  greater  than  40  

Page 19: Thoughtworks Brazil, Code Quality

Flog  

Page 20: Thoughtworks Brazil, Code Quality

DuplicaHon  with  Flay  

Watch  for  scores  greater  than  30  

Page 21: Thoughtworks Brazil, Code Quality
Page 22: Thoughtworks Brazil, Code Quality

Control  Couples  and  more    with  Reek  

Simulated  Polymorphism  Feature  Envy  UHlity  Methods  

Page 23: Thoughtworks Brazil, Code Quality

LinHng  with  Dust/Nitpick  

JSLint  for  Ruby  

Page 24: Thoughtworks Brazil, Code Quality

Common  smells    in  Ruby    

Page 25: Thoughtworks Brazil, Code Quality

PrimiHve  Obsession  

Page 26: Thoughtworks Brazil, Code Quality

Feature  Envy  

Page 27: Thoughtworks Brazil, Code Quality

Meta-­‐programming  

Keep  it  simple.    Keep  it  declaraHve  

Page 28: Thoughtworks Brazil, Code Quality
Page 29: Thoughtworks Brazil, Code Quality

Toxicity  is  more  than  code  smells  

Page 30: Thoughtworks Brazil, Code Quality

“The  real  problem  I  have  with  the  CK  suite  and  similar  metrics  is  that  they  only  measure  a  single  module  (or  class  in  this  case).    I  claim  that  the  quality  of  the  design  of  a  system  is  not  something  that  can  be  determined  by  looking  at  individual  classes.    It  is  conceivable  that  every  class  in  a  system  could  be  considered  reasonable  by  whatever  single-­‐class  metrics  are  being  used,  but  the  overall  design  is  considered  bad.”  

hDp://www.cs.auckland.ac.nz/~ewan/  

Ewan  Tempero:  A  Research  Agenda  

Page 31: Thoughtworks Brazil, Code Quality

DEPENDENCY  

Page 32: Thoughtworks Brazil, Code Quality

Tangles  

Page 33: Thoughtworks Brazil, Code Quality

Step  2:  Make  it  visible  

Page 34: Thoughtworks Brazil, Code Quality

Treemaps  (Max  CC)  

hbp://mbostock.github.com/protovis/  

Page 35: Thoughtworks Brazil, Code Quality

Treemaps  

Page 36: Thoughtworks Brazil, Code Quality

Dependency  matrix  

Page 37: Thoughtworks Brazil, Code Quality

Step  3:  Agree  on  the  fix  

Page 38: Thoughtworks Brazil, Code Quality
Page 39: Thoughtworks Brazil, Code Quality
Page 40: Thoughtworks Brazil, Code Quality

Step  4:      Go  fix  it  

Page 41: Thoughtworks Brazil, Code Quality

Obrigado