Thursday, August 16, 2018

My Take on Code Qualities

You probably have some set of properties in your head that you consider to be important about code.

Mine are as follows:

  • Cohesion - how strongly-related are the parts of any given whole?
  • Coupling - how proper are the relationships between structures?
  • Encapsulation - how difficult is it to create inappropriate coupling?
  • Redundancy - how many places do you need to make the same change for the same reason?
  • Focus - how easy is it for you to find where a change needs to be made?
  • Readability - how easy is it for an equivalently-skilled developer to understand?
  • Testability - how easy is it to verify that the system does what it should?
I don't know how far back these ideas go. I just know I didn't codify them. Someone else came up with this way of analyzing code quality and it resonated with me.

These terms represent my language of design-health. By attending to these things, I can keep a design on track. Ignoring them all but guarantees it will go off the rails.