Clean Code (PDF version)

  • 11,534 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
11,534
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
259
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