Refactoring is accidental complexity.

Accidental complexity is also known as “epicycles”1.

The need to refactor a design or to refactor code, should be a red flag.

Refactoring should never be needed in a design which has been decomposed into its most-atomic units[^2].
[^2]: Note that I believe that code should be machine-readable. Designs are meant to be human readable. Refactoring should be reserved for designs only. Good designs, don’t need to be refactored. Structure should only be applied to designs, not code. [At present, all designs are baked into code by virtue of the kinds of languages we use. If you find a need to refactor code, then split the code into 2 parts - design and code - first.]

Refactoring is accidental complexity caused by too much structure in a design.

Structure can be added in by creating queries.

Structure should not be baked into a factbase.

[Structure in queries is OK, structure in factbases is bad].

  1. See Copernican vs. Ptolemaic Cosmology. See Arthur Koestler’s “The Sleepwalkers”.