clean-code

Clean Code

Notes

  • https://github.com/jbarroso/clean-code

  • https://github.com/JuanCrg90/Clean-Code-Notes

  • https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29

  • https://www.planetgeek.ch/wp-content/uploads/2013/06/Clean-Code-V2.2.pdf

  • https://monami555.github.io/2016/01/13/clean-code-robert-c-martin-notes.html#12-concurrency

  • https://www.youtube.com/watch?v=QiaDztJZO5Q

  • https://youtu.be/6va1hAyh-M8 DevTernity 2021: Victor Rentea – Clean Code, Two Decades Later

Types

  • Avoid unnecessary comparisons

    • Dont compare against boolean

  • Avoid negations

    • in conditionals

  • Return boolean from statement, rather than using if statement

  • Simplify boolean expressions

    • extract to methods with meaningful names

  • Avoid null pointer exceptions in conditionals

    • check for null onf arguments before checks for domain specific illegal values, check for common default values then specific values

  • Avoid switch fallthrough

    • use break at the end of each case

    • use default to catch call

  • Always use braces with if/else

  • Ensure code symmetry

    • Keep all branches in if/else the same, seperate different to seperate if block

  • Replace magic numbers with constants

  • Favour enums over integer constants

  • For-each over for loops

  • Avoid collection modification during iteration

  • Avoid compute intense operations during iteration

  • Group with new lines

  • Favour string format over concat

  • Favour Java API over DIY API

  • Use java naming conventions

  • Avoid single letter names and abbreivations

  • Fail fast

  • Always catch most specific exceptions

  • In exceptions, explain cause in the message

  • In exception show the stack trace

  • Always check type before casting

  • Always close resources

  • Explain Empty Catch

  • Structure Tests Into Given-When-Then

  • Use Meaningful Assertions

  • Use Reasonable Tolerance Values

  • Let JUnit Handle Exceptions

  • Describe Your Tests

  • Favor Standalone Tests

  • Parametrize Your Tests

  • Cover the Edge Cases

  • Split Method with Boolean Parameters

  • Split Method with Optional Parameters

  • Favor Abstract Over Concrete Types

  • Favor Immutable Over Mutable State

  • Combine State and Behavior

  • Avoid Leaking References

  • Avoid Returning Null

  • Favor Lambdas Over Anonymous Classes

  • Favor Functional Over Imperative Style

  • Favor Method References Over Lambdas

  • Avoid Side Effects

  • Use Collect for Terminating Complex Streams

  • Avoid Exceptions in Streams

  • Favor Optional Over Null

  • Avoid Optional Fields or Parameters

  • Use Optionals as Streams

Last updated