In 1999 Kent Back created the “rules of simple design”, which were a set of criteria designed to see if some source code is “simple enough”.
a source code can only pass the simplicity test if: the code is verified by automated tests and passes; the code contains no duplication; the code expresses separately each distinct idea or responsibility; the code is composed of the minimum number of components that are compatible with the first three criteria.

Imagem relacionada

The first one is fairly trivial but in order to work, it has to have 0 defects which is not as simple as that. Unit tests are at best suggestive evidence that a program has no defects and certainly no definite proof. Even if Agile discourse considers them an excellent first line of defense.

The next two are up for logical understanding. Since, unfortunately, “copy-paste programming” is a very common industry practice, code duplication can be taken literally, as character-for-character duplication. this can be easily fixed through diligent refactoring. Even if some may recognize some other different forms of duplication!

equivalently to the two above, there has been a considerable amount of distinct attempts at formalizing this third one, such as “low coupling and high cohesion” and the SOLID design principles.