|
The metaphor, I think, is that your code is a mathematical function, and, to be even more specific and "toy example" about it, let's say it's a polynomial. If the old code was x^2 + x z + y x + y z then you notice that you can express the same polynomial as: (x + y)*(x + z) It's still the same polynomial, but you "separated concerns", turning it into a product of two simpler factors. Similar ideas apply to sets of tuples. Perhaps you were given {(1, 1), (1, 4), (2, 1), (2, 4), (3, 1), (3, 4)} and you notice that this can be expressed more simply as the Cartesian product: {1, 2, 3} x {1, 4} Again, a literal factoring. You can imagine how variations of this idea would apply to database tables and data structures. That's where I think the word "refactor" comes from. |
Nice to learn where the word originates from. Often the meaning of words change over time. E.g. today no horses need involved in bootstrapping.