Does Your Code Measure Up? By: Adam Culp Twitter: @ adamculp - - PowerPoint PPT Presentation

▶
does your code measure up
SMART_READER_LITE
LIVE PREVIEW

Does Your Code Measure Up? By: Adam Culp Twitter: @ adamculp - - PowerPoint PPT Presentation

Does Your Code Measure Up? By: Adam Culp Twitter: @ adamculp https://joind.in/ 13300 Does Your Code Measure Up? About me PHP 5.3 Certified Consultant at Zend Technologies Organizer SoFloPHP (South Florida) Organized


slide-1
SLIDE 1

Does Your Code Measure Up?

By:

Adam Culp

Twitter: @adamculp https://joind.in/13300

slide-2
SLIDE 2

2

Does Your Code Measure Up?

  • About me

–

PHP 5.3 Certified

–

Consultant at Zend Technologies

–

Organizer SoFloPHP (South Florida)

–

Organized SunshinePHP (Miami)

–

Long distance (ultra) runner

–

Judo Black Belt Instructor

slide-3
SLIDE 3

3

Does Your Code Measure Up?

  • Fan of iteration

–

Pretty much everything requires iteration to do well:

  • Long distance running
  • Judo
  • Development
  • Evading project managers
  • Quality!
slide-4
SLIDE 4

4

Does Your Code Measure Up?

  • How To Measure?

–

Not productive

slide-5
SLIDE 5

5

Does Your Code Measure Up?

  • How To Measure?

–

More accurate, quantifiable

slide-6
SLIDE 6

6

Does Your Code Measure Up?

  • Why Measure?

–

Highlight bugs

slide-7
SLIDE 7

7

Does Your Code Measure Up?

  • Why Measure?

–

Highlight bugs

–

Improve quality

  • Easier onboarding
  • Less reading, more writing
  • Testable
slide-8
SLIDE 8

8

Does Your Code Measure Up?

  • Why Measure?

–

Highlight bugs

–

Improve quality

  • Easier onboarding
  • Less reading, more writing
  • Testable

–

Satisfied customers

  • Faster development
  • Less broken
slide-9
SLIDE 9

9

Does Your Code Measure Up?

  • Why Measure?

–

Highlight bugs

–

Improve quality

  • Easier onboarding
  • Less reading, more writing
  • Testable

–

Satisfied customers

  • Faster development
  • Less broken

–

Personal pride

slide-10
SLIDE 10

10

Does Your Code Measure Up?

  • Why Measure?

–

Highlight bugs

–

Improve quality

  • Easier onboarding
  • Less reading, more writing
  • Testable

–

Satisfied customers

  • Faster development
  • Less broken

–

Personal pride

–

Higher salary

slide-11
SLIDE 11

11

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

  • “The count of the number of linearly independent paths through the

source code.” - wikipedia

  • Decision points
  • Less than 10 (personally less than 6)
slide-12
SLIDE 12

12

Does Your Code Measure Up?

  • Cyclomatic Complexity Example
slide-13
SLIDE 13

13

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

  • Rule of 3
slide-14
SLIDE 14

14

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

  • Less than 1,000 lines
  • Classes solve a (1) problem
slide-15
SLIDE 15

15

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class Complexity

  • Less than 50
slide-16
SLIDE 16

16

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

  • Less than 100 (personally less than 20)
  • Method should do one thing
slide-17
SLIDE 17

17

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

–

Unused variables

slide-18
SLIDE 18

18

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

–

Unused variables

–

Lack or overuse of comments

  • Clear, concise, not explain bad code
slide-19
SLIDE 19

19

Does Your Code Measure Up?

  • Comment Example
slide-20
SLIDE 20

20

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

–

Unused variables

–

Lack or overuse of comments

–

Heavy global usage

slide-21
SLIDE 21

21

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

–

Unused variables

–

Lack or overuse of comments

–

Heavy global usage

–

Npath complexity

  • Possible paths through code
  • Less than 200 paths
slide-22
SLIDE 22

22

Does Your Code Measure Up?

  • What To Measure?

–

Cyclomatic complexity

–

Duplicate code

–

Long classes

–

Class complexity

–

Long methods

–

Unused variables

–

Lack or overuse of comments

–

Heavy global usage

–

Npath complexity

–

Much, much, more

  • Code smells
slide-23
SLIDE 23

23

Does Your Code Measure Up?

  • Code “smells”

–

What are “smells”?

  • Indications of spoiled code nearby
  • Not conclusive
  • The “smell” is not bad
slide-24
SLIDE 24

24

Does Your Code Measure Up?

  • Code “smells”

–

“Smells” hinting a refactor may be needed:

  • Duplicate Code (rule of 3)
  • Long Methods
  • Large Class
  • Long Parameter (argument) List
  • Divergent Change – cascade change to accommodate another
  • Shotgun Surgery – change ripples as bugs
  • Feature Envy – method uses parts from other class
  • Switch Statements – sacrifice polymorphism
slide-25
SLIDE 25

25

Does Your Code Measure Up?

  • Code “smells”

–

Cont'd:

  • Lazy Class – class not doing much
  • Speculative Generality – something built for possible future
  • Temporary Field/Variable
  • Message Chains – object asking object asking object
  • Middle Man – directors in place but serve no real purpose
  • Inappropriate Intimacy – classes share private parts
  • Data Class – getters and setters, but nothing else
  • Comments – where comments cover bad code
slide-26
SLIDE 26

26

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

slide-27
SLIDE 27

27

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
slide-28
SLIDE 28

28

Does Your Code Measure Up?

  • PHPLoc Results
slide-29
SLIDE 29

29

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
  • PHP_Depend
slide-30
SLIDE 30

30

Does Your Code Measure Up?

  • PHP_Depend Result

–

Graphs and XML output

ANDC AHH NOP NOC NOM LOC CYCLO NOM CALLS FANOUT 9891 96646 66812 395815 23359 342 3192 0.585 0.442 9.333 7.318 16.945 0.169 0.102 4.137

Generated by PHP_Depend Low Average High

slide-31
SLIDE 31

31

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
  • PHP_Depend
  • PHP Copy/Paste Detector
slide-32
SLIDE 32

32

Does Your Code Measure Up?

  • PHP Copy/Paste Detector Result
slide-33
SLIDE 33

33

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
  • PHP_Depend
  • PHP Copy/Paste Detector
  • PHP Mess Detector

– Codesize

slide-34
SLIDE 34

34

Does Your Code Measure Up?

  • PHP Mess Detector Result (codesize)
slide-35
SLIDE 35

35

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
  • PHP_Depend
  • PHP Copy/Paste Detector
  • PHP Mess Detector

– Codesize – Unused

slide-36
SLIDE 36

36

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

  • PHPLoc
  • PHP_Depend
  • PHP Copy/Paste Detector
  • PHP Mess Detector

– Codesize – Unused

  • PHP Dead Code Detector

– Searches for code no longer used

slide-37
SLIDE 37

37

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

–

PHPMetrics

  • http://phpmetrics.org
slide-38
SLIDE 38

38

Does Your Code Measure Up?

  • PHPMetrics Results
slide-39
SLIDE 39

39

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

–

PHPMetrics

–

PHP_Codesniffer

  • Create rules/sniffs to ensure standards are followed
  • From CLI, IDE, or via SCM hooks
slide-40
SLIDE 40

40

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

–

PHPMetrics

–

PHP_Codesniffer

–

Code Climate

  • Build from Git/Github repo

– Open = free – Private = $

  • GPA – like in high school, simple
slide-41
SLIDE 41

41

Does Your Code Measure Up?

  • Code Climate

–

Build from Git/Github repo

– Open = free – Private = $

slide-42
SLIDE 42

42

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

–

PHPMetrics

–

PHP_Codesniffer

–

Code Climate

–

Zend Server and Z-Ray

  • Debugging, Code tracing, Error reporting
slide-43
SLIDE 43

43

Does Your Code Measure Up?

  • Realtime profiling

–

Z-Ray

slide-44
SLIDE 44

44

Does Your Code Measure Up?

  • Tools

–

PHPqatools.org

–

PHPMetrics

–

PHP_Codesniffer

–

Code Climate

–

Zend Server and Z-Ray

–

Apache Bench (apache2-utils in apt)

  • How much traffic can you handle?
slide-45
SLIDE 45

45

Does Your Code Measure Up?

  • Apache Bench Result
slide-46
SLIDE 46

46

Does Your Code Measure Up?

  • Conclusion

–

Measure all the things!

–

Don't fear results, share them

–

Reduce complexity

–

Leave code cleaner than you got it

–

Learn to “smell” problems

–

Use refactoring to fix shortcomings

–

Love iteration!

slide-47
SLIDE 47
  • Thank you!

–

Code: https://github.com/adamculp/refactoring101

–

http://phpqatools.org

–

http://phpmetrics.org

–

http://zend.com

–

http://codeclimate.com

–

Please rate at: https://joind.in/13300

Adam Culp http://www.geekyboy.com Twitter @adamculp