A small caveat before we start. The theory proposed here has been developed from an interest in psychology and it's impact on software design. It does not give a formula that automatically generates well designed code. Rather, it identifies the hidden skills we all employ to do it and in so doing provide a window, a way of thinking to the novice that should help them develop their own natural skills.
We will be looking at the stage of design which does not change the behaviour or performance of code.
In this respect making the code easier to understand is the primary driver. When developing we must take the view that we are writing code for other people.
The psychology of how we understand and learn has a number of parallels with the design principles that influence us to produce “clean” code.