Clean Code (PDF version)
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Clean Code (PDF version)

  • 12,149 views
Uploaded on

Slides about Robert C. Martins book "Clean Code: A Handbook of Agile Software Craftsmanship". (PDF version)

Slides about Robert C. Martins book "Clean Code: A Handbook of Agile Software Craftsmanship". (PDF version)

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
12,149
On Slideshare
12,149
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
252
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Clean Code Hendrik Ebel 10. Mar. 2009 1
  • 2. TopicsMotivationMeaningful NamesCommentsFunctions By Robert C. Martin & Co.Objects and Data Structures Object Mentor Inc.Error HandlingUnit Tests 2
  • 3. What is Clean Code?One Question ... 3
  • 4. What is Clean Code? One Question ... elegant efficient simple and direct readability easy to enhance like a well-written prose care no duplications was made for the problem...many answers! 4
  • 5. What is Clean Code? One Question ... elegant efficient simple and direct readability easy to enhance like a well-written prose care no duplications was made for the problem...many answers! 5
  • 6. MotivationThe Total Cost of Owning a Mess productivity vs. time 6
  • 7. Aims of Clean Codeproducing better code@author writing for readerscode has to be kept clean over time„Leave the campground cleaner thanyou found it.“ 7
  • 8. Meaningful Names 8
  • 9. Meaningful Namesvariable, function or class names shouldanswer all the big questions: why it exists? what it does? how it is used? 9
  • 10. Meaningful NamesIf a name requires a comment, then thename does not reveal its intentavoid disinformation dont use type information in names (example: personList) Spelling similar concepts similarly is information. Using inconsistent spellings is disinformation. 10
  • 11. Comments 11
  • 12. Good and Bad Comments•Public API Comments •Redundant Comments•Legal Comments •Noise Comments•Explanation of Intent •Position Markers•Warning for •Closing Brace Comments Consequences •Commented-Out Code•real TODO Comments •Obsolete Comments •Nonpublic JavaDocs 12
  • 13. Comments„Purpose of a comment is to explain codethat does not explain itself.“Comments do not make up for bad codeDon‘t use a comment when you can use afunction or a variableComments can contains lies 13
  • 14. Functions 14
  • 15. FunctionsThe goal is to tell the story of thesystem.„The first rule of functions is that theyshould be small.“Do One Thing!Stepdown Rule 15
  • 16. FunctionsIdeal number of arguments is zeroMore than three should‘t be usedanywayFlag arguments are ugly.Avoid output argumentsSide effects are lies. 16
  • 17. Objects and Data Structures 17
  • 18. Objectshide data and expose functionseasy to add new objectshard to add new behaviors 18
  • 19. Data Structuresexpose data and have no meaningfulfunctionseasy to add new behaviorshard to add new data structuresChoose the approach that is best for the job. 19
  • 20. Error Handling 20
  • 21. Error HandlingWrite code that is clean and rebustSee error handling as a separate concernUse exceptions rather than return codesUse unchecked exceptions 21
  • 22. Error HandlingDon‘t return NULL throwing an exception or a special case object like „Collections.emptyList()“Don‘t pass NULL InvalidArgumentExceptions or assert better: forbid passing NULL by default 22
  • 23. Unit Tests 23
  • 24. Unit TestsTest Driven Development (TDD) test and production code are written together tests just a few seconds aheadKeeping tests cleanTest code is just as important asproduction code. 24
  • 25. Unit TestsOne Assert or Single Concept per TestF.I.R.S.T. Fast Independent Repeatable (in any environment) Self-Validation Timly 25
  • 26. Thanks - Any Questions? 26
  • 27. SourcesBook „Clean Code“ by Robert C. Martin ISBN: 0132350882Images http://www.failblog.org http://www.flickr.com/photos/hugovk/199425487/ http://www.flickr.com/photos/jackpot321/1809424991/ http://www.osnews.com/story/19266/WTFs_m 27