Refactoring great habits


Considerations when writing a new test

  • Tests should test one thing only.
  • Create more specific tests to drive a more generic solution (triangulate).
  • Give your tests meaningful names (behavior/goal-oriented) that reflect your business domain.
  • See the test fail for the right reason.
  • Ensure you have meaningful feedback from failing tests.
  • Keep your tests and production code separate.
  • Organize your unit tests to reflect your production code (similar project structure).
  • Organize your test in arrange, act and assert blocks.
  • Write the assertion first and work backward.
  • Write fast, isolated, repeatable and self-validating tests.

Considerations when making a failing test pass

  • Write the simplest code to pass the test.
  • Write any code that makes you get to the refactor phase quicker.
  • Use Transformation Priority Premise.
  • Consider using object calisthenics to drive design decisions.

Considerations after the test passes

  • Use the Rule of Three to tackle duplication.
  • Refactor design constantly.
  • Apply object calisthenics to improve your design.
  • Stay on the green while refactoring (New habit).
  • Use the IDE to refactor quickly and safely (New habit).
  • Refactor code for readability/understandability first (New habit).