SlideShare uma empresa Scribd logo
1 de 27
Clean Code

                              Hendrik Ebel
                             10. Mar. 2009
Tuesday, March 10, 2009
Topics
                          Motivation
                          Meaningful Names
                          Comments
                          Functions
                                                        By Robert C. Martin & Co.


                          Objects and Data Structures      Object Mentor Inc.




                          Error Handling
                          Unit Tests
Tuesday, March 10, 2009
What is Clean Code?
                          One Question ...




Tuesday, March 10, 2009
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!
Tuesday, March 10, 2009
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!
Tuesday, March 10, 2009
Motivation
                          The Total Cost of Owning a Mess




                                    productivity vs. time

Tuesday, March 10, 2009
Aims of Clean Code

                          producing better code
                          @author writing for readers
                          code has to be kept clean over time
                          „Leave the campground cleaner than
                          you found it.“


Tuesday, March 10, 2009
Meaningful Names




Tuesday, March 10, 2009
Meaningful Names
                          variable, function or class names should
                          answer all the big questions:

                           why it exists?
                           what it does?
                           how it is used?


Tuesday, March 10, 2009
Meaningful Names
                          If a name requires a comment, then the
                          name does not reveal its intent
                          avoid disinformation
                           don't use type information in names
                           (example: personList)
                           Spelling similar concepts similarly is
                           information. Using inconsistent spellings is
                           disinformation.

Tuesday, March 10, 2009
Comments




Tuesday, March 10, 2009
Good and Bad Comments
                     • Public API Comments     • Redundant Comments
                     • Legal Comments          • Noise Comments
                     • Explanation of Intent   • Position Markers
                     • Warning for             • Closing Brace Comments
                                               • Commented-Out Code
                          Consequences
                     • real TODO Comments      • Obsolete Comments
                                               • Nonpublic JavaDocs



Tuesday, March 10, 2009
Comments

                          „Purpose of a comment is to explain code
                          that does not explain itself.“
                          Comments do not make up for bad code
                          Don‘t use a comment when you can use a
                          function or a variable
                          Comments can contains lies

Tuesday, March 10, 2009
Functions




Tuesday, March 10, 2009
Functions
                          The goal is to tell the story of the
                          system.
                          „The first rule of functions is that they
                          should be small.“
                          Do One Thing!
                          Stepdown Rule


Tuesday, March 10, 2009
Functions
                          Ideal number of arguments is zero
                          More than three should‘t be used
                          anyway
                          Flag arguments are ugly.
                          Avoid output arguments
                          Side effects are lies.


Tuesday, March 10, 2009
Objects and Data
                             Structures




Tuesday, March 10, 2009
Objects
                          hide data and expose functions
                          easy to add new objects
                          hard to add new behaviors




Tuesday, March 10, 2009
Data Structures
                          expose data and have no meaningful
                          functions
                          easy to add new behaviors
                          hard to add new data structures

                          Choose the approach that is best for the job.



Tuesday, March 10, 2009
Error Handling




Tuesday, March 10, 2009
Error Handling

                          Write code that is clean and rebust
                          See error handling as a separate concern
                          Use exceptions rather than return codes
                          Use unchecked exceptions



Tuesday, March 10, 2009
Error Handling
                          Don‘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
Tuesday, March 10, 2009
Unit Tests




Tuesday, March 10, 2009
Unit Tests
                          Test Driven Development (TDD)
                           test and production code are written
                           together
                           tests just a few seconds ahead
                          Keeping tests clean
                          Test code is just as important as
                          production code.

Tuesday, March 10, 2009
Unit Tests
                          One Assert or Single Concept per Test
                          F.I.R.S.T.
                            Fast
                            Independent
                            Repeatable (in any environment)
                            Self-Validation
                            Timly

Tuesday, March 10, 2009
Thanks - Any Questions?




Tuesday, March 10, 2009
Sources
             Book
                   „Clean Code“ by Robert C. Martin
                   ISBN: 0132350882
             Images
                   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

Tuesday, March 10, 2009

Mais conteúdo relacionado

Mais procurados

Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Clean Pragmatic Architecture - Avoiding a Monolith
Clean Pragmatic Architecture - Avoiding a MonolithClean Pragmatic Architecture - Avoiding a Monolith
Clean Pragmatic Architecture - Avoiding a MonolithVictor Rentea
 
Clean Code Principles
Clean Code PrinciplesClean Code Principles
Clean Code PrinciplesYeurDreamin'
 
Functional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupFunctional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupVictor Rentea
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionKent Huang
 
7 rules of simple and maintainable code
7 rules of simple and maintainable code7 rules of simple and maintainable code
7 rules of simple and maintainable codeGeshan Manandhar
 
The Art of Clean code
The Art of Clean codeThe Art of Clean code
The Art of Clean codeVictor Rentea
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)nedirtv
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentationBhavin Gandhi
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next ChapterVictor Rentea
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentJohn Blum
 

Mais procurados (20)

Clean code slide
Clean code slideClean code slide
Clean code slide
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
Clean code
Clean codeClean code
Clean code
 
Clean code
Clean codeClean code
Clean code
 
Clean Pragmatic Architecture - Avoiding a Monolith
Clean Pragmatic Architecture - Avoiding a MonolithClean Pragmatic Architecture - Avoiding a Monolith
Clean Pragmatic Architecture - Avoiding a Monolith
 
Clean code
Clean code Clean code
Clean code
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean code
Clean codeClean code
Clean code
 
Writing clean code
Writing clean codeWriting clean code
Writing clean code
 
Clean Code Principles
Clean Code PrinciplesClean Code Principles
Clean Code Principles
 
Functional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupFunctional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User Group
 
Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 Function
 
Clean code
Clean codeClean code
Clean code
 
7 rules of simple and maintainable code
7 rules of simple and maintainable code7 rules of simple and maintainable code
7 rules of simple and maintainable code
 
The Art of Clean code
The Art of Clean codeThe Art of Clean code
The Art of Clean code
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next Chapter
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 

Semelhante a Clean Code

Inleiding tot CHI
Inleiding tot CHIInleiding tot CHI
Inleiding tot CHIErik Duval
 
NodeJS: Writing tests -- A Beginners' Guide
NodeJS: Writing tests -- A Beginners' GuideNodeJS: Writing tests -- A Beginners' Guide
NodeJS: Writing tests -- A Beginners' GuideGrey Ang
 
Towards Organizational Agent-based Operating Systems
Towards Organizational Agent-based Operating SystemsTowards Organizational Agent-based Operating Systems
Towards Organizational Agent-based Operating SystemsJavi Palanca
 
JSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklJSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklChristoph Pickl
 
JSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklJSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklChristoph Pickl
 
Managing And Optimizing Memory Usage
Managing And Optimizing Memory UsageManaging And Optimizing Memory Usage
Managing And Optimizing Memory UsageJohn Wilker
 
Multi player iPhone Games
Multi player iPhone GamesMulti player iPhone Games
Multi player iPhone GamesJohn Wilker
 
IT Presentation to Internal Library Building Committee
IT Presentation to Internal Library Building CommitteeIT Presentation to Internal Library Building Committee
IT Presentation to Internal Library Building CommitteeJason Griffey
 
Introduction au referencemnet naturel
Introduction au referencemnet naturelIntroduction au referencemnet naturel
Introduction au referencemnet naturelSamuel Lavoie
 
AIM to Chat with Meebo: Logging onto Academic Advising
AIM to Chat with Meebo: Logging onto Academic AdvisingAIM to Chat with Meebo: Logging onto Academic Advising
AIM to Chat with Meebo: Logging onto Academic AdvisingMarissa Saenz
 
Szczepan Faber mockito story (1)
Szczepan Faber   mockito story (1)Szczepan Faber   mockito story (1)
Szczepan Faber mockito story (1)magda3695
 
ATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacDierk Seeburg
 

Semelhante a Clean Code (17)

JavaScript for PHP Developers
JavaScript for PHP DevelopersJavaScript for PHP Developers
JavaScript for PHP Developers
 
Depot Best Practices
Depot Best PracticesDepot Best Practices
Depot Best Practices
 
Inleiding tot CHI
Inleiding tot CHIInleiding tot CHI
Inleiding tot CHI
 
NodeJS: Writing tests -- A Beginners' Guide
NodeJS: Writing tests -- A Beginners' GuideNodeJS: Writing tests -- A Beginners' Guide
NodeJS: Writing tests -- A Beginners' Guide
 
Towards Organizational Agent-based Operating Systems
Towards Organizational Agent-based Operating SystemsTowards Organizational Agent-based Operating Systems
Towards Organizational Agent-based Operating Systems
 
JSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklJSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph Pickl
 
JSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklJSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph Pickl
 
Managing And Optimizing Memory Usage
Managing And Optimizing Memory UsageManaging And Optimizing Memory Usage
Managing And Optimizing Memory Usage
 
STOP! Use case time!
STOP! Use case time!STOP! Use case time!
STOP! Use case time!
 
Multi player iPhone Games
Multi player iPhone GamesMulti player iPhone Games
Multi player iPhone Games
 
IT Presentation to Internal Library Building Committee
IT Presentation to Internal Library Building CommitteeIT Presentation to Internal Library Building Committee
IT Presentation to Internal Library Building Committee
 
Introduction au referencemnet naturel
Introduction au referencemnet naturelIntroduction au referencemnet naturel
Introduction au referencemnet naturel
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
AIM to Chat with Meebo: Logging onto Academic Advising
AIM to Chat with Meebo: Logging onto Academic AdvisingAIM to Chat with Meebo: Logging onto Academic Advising
AIM to Chat with Meebo: Logging onto Academic Advising
 
Becoming Indie
Becoming IndieBecoming Indie
Becoming Indie
 
Szczepan Faber mockito story (1)
Szczepan Faber   mockito story (1)Szczepan Faber   mockito story (1)
Szczepan Faber mockito story (1)
 
ATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The Mac
 

Último

psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfChris Hunter
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Shubhangi Sonawane
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfAyushMahapatra5
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...KokoStevan
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 

Último (20)

psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
Ecological Succession. ( ECOSYSTEM, B. Pharmacy, 1st Year, Sem-II, Environmen...
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Class 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdfClass 11th Physics NEET formula sheet pdf
Class 11th Physics NEET formula sheet pdf
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Advance Mobile Application Development class 07
Advance Mobile Application Development class 07Advance Mobile Application Development class 07
Advance Mobile Application Development class 07
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
SECOND SEMESTER TOPIC COVERAGE SY 2023-2024 Trends, Networks, and Critical Th...
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 

Clean Code

  • 1. Clean Code Hendrik Ebel 10. Mar. 2009 Tuesday, March 10, 2009
  • 2. Topics Motivation Meaningful Names Comments Functions By Robert C. Martin & Co. Objects and Data Structures Object Mentor Inc. Error Handling Unit Tests Tuesday, March 10, 2009
  • 3. What is Clean Code? One Question ... Tuesday, March 10, 2009
  • 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! Tuesday, March 10, 2009
  • 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! Tuesday, March 10, 2009
  • 6. Motivation The Total Cost of Owning a Mess productivity vs. time Tuesday, March 10, 2009
  • 7. Aims of Clean Code producing better code @author writing for readers code has to be kept clean over time „Leave the campground cleaner than you found it.“ Tuesday, March 10, 2009
  • 9. Meaningful Names variable, function or class names should answer all the big questions: why it exists? what it does? how it is used? Tuesday, March 10, 2009
  • 10. Meaningful Names If a name requires a comment, then the name does not reveal its intent avoid disinformation don't use type information in names (example: personList) Spelling similar concepts similarly is information. Using inconsistent spellings is disinformation. Tuesday, March 10, 2009
  • 12. Good and Bad Comments • Public API Comments • Redundant Comments • Legal Comments • Noise Comments • Explanation of Intent • Position Markers • Warning for • Closing Brace Comments • Commented-Out Code Consequences • real TODO Comments • Obsolete Comments • Nonpublic JavaDocs Tuesday, March 10, 2009
  • 13. Comments „Purpose of a comment is to explain code that does not explain itself.“ Comments do not make up for bad code Don‘t use a comment when you can use a function or a variable Comments can contains lies Tuesday, March 10, 2009
  • 15. Functions The goal is to tell the story of the system. „The first rule of functions is that they should be small.“ Do One Thing! Stepdown Rule Tuesday, March 10, 2009
  • 16. Functions Ideal number of arguments is zero More than three should‘t be used anyway Flag arguments are ugly. Avoid output arguments Side effects are lies. Tuesday, March 10, 2009
  • 17. Objects and Data Structures Tuesday, March 10, 2009
  • 18. Objects hide data and expose functions easy to add new objects hard to add new behaviors Tuesday, March 10, 2009
  • 19. Data Structures expose data and have no meaningful functions easy to add new behaviors hard to add new data structures Choose the approach that is best for the job. Tuesday, March 10, 2009
  • 21. Error Handling Write code that is clean and rebust See error handling as a separate concern Use exceptions rather than return codes Use unchecked exceptions Tuesday, March 10, 2009
  • 22. Error Handling Don‘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 Tuesday, March 10, 2009
  • 24. Unit Tests Test Driven Development (TDD) test and production code are written together tests just a few seconds ahead Keeping tests clean Test code is just as important as production code. Tuesday, March 10, 2009
  • 25. Unit Tests One Assert or Single Concept per Test F.I.R.S.T. Fast Independent Repeatable (in any environment) Self-Validation Timly Tuesday, March 10, 2009
  • 26. Thanks - Any Questions? Tuesday, March 10, 2009
  • 27. Sources Book „Clean Code“ by Robert C. Martin ISBN: 0132350882 Images 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 Tuesday, March 10, 2009

Notas do Editor