“Don’t Repeat Yourself”: A development philosophy where repeated code is avoided.
Described by Andy Hunt and Dave Thomas as “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”
Advantages include:
Easier refactoring, as key code does not affect unrelated code.
More uniformity, as code blocks refer to required logic rather than partially recreating.
Rule of Three refers to the guideline of waiting for the third use of a potentially abstracted code element before abstracting.
Immediate abstraction is avoided, as core requirements and definitions may not be feasibly recognized with few instances.
“You Aren’t Gonna Need It”: Design principle that discourages adding more functionality than currently required.
Defined as part of extreme programming philosophy alongside frequent testing and refactoring practices.
Minimum Viable Product: The simplest build of a product that allows use.
Advantages include:
Testing and feedback from early use, leading to user-informed development earlier in the cycle.
Shorter time to abandonment of unviable products.
More recognition of product and/or brand