User Tools

Site Tools


principles:don_t_repeat_yourself

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
principles:don_t_repeat_yourself [2012-11-27 18:29] – new template + enhancement christianprinciples:don_t_repeat_yourself [2021-09-02 11:47] – old revision restored (2021-05-19 10:22) 65.21.179.175
Line 1: Line 1:
 ====== Don't Repeat Yourself (DRY) ====== ====== Don't Repeat Yourself (DRY) ======
  
-===== Alternative Names =====+===== Variants and Alternative Names =====
  
   * Single Point of Truth (SPOT)   * Single Point of Truth (SPOT)
Line 8: Line 8:
 ===== Context ===== ===== Context =====
  
-  * [[contexts:Software Design]]+  * [[contexts:Object-Oriented Design]]
  
- +===== Principle Statement =====
-===== Description =====+
  
 > "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."((Andrew Hunt and David Thomas: //The Pragmatic Programmer: From Journeyman to Master//; see [[http://pragprog.com/the-pragmatic-programmer/extracts/tips|List of Tips]].)) > "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."((Andrew Hunt and David Thomas: //The Pragmatic Programmer: From Journeyman to Master//; see [[http://pragprog.com/the-pragmatic-programmer/extracts/tips|List of Tips]].))
 +
 +
 +===== Description =====
  
 DRY not only states that code duplication shall be avoided. Rather DRY is a general rule that states that if there is duplication, there shall be some "single source of truth". Also when one piece of information has several representations (like an object structure corresponding to a database schema) DRY demands one and only one representation being the definitive one. The other representations have to be generated automatically. The "one and only" representation can be one of the used representations or alternatively a third one. DRY not only states that code duplication shall be avoided. Rather DRY is a general rule that states that if there is duplication, there shall be some "single source of truth". Also when one piece of information has several representations (like an object structure corresponding to a database schema) DRY demands one and only one representation being the definitive one. The other representations have to be generated automatically. The "one and only" representation can be one of the used representations or alternatively a third one.
Line 21: Line 23:
  
 If there are several representations of the same information (be it code or any other form of information), all of them have to be maintained separately while changing at the same time. There is the danger that at some point in time the different representations diverge which is a fault. But if there is a single source of truth, there is only one place where changes have to be applied. Then the representations cannot diverge. If there are several representations of the same information (be it code or any other form of information), all of them have to be maintained separately while changing at the same time. There is the danger that at some point in time the different representations diverge which is a fault. But if there is a single source of truth, there is only one place where changes have to be applied. Then the representations cannot diverge.
 +
 +
 +===== Strategies =====
  
  
Line 40: Line 45:
 ==== Generalizations ==== ==== Generalizations ====
  
-  * [[principles:Generalization Principle]] 
  
 ==== Specializations ==== ==== Specializations ====
  
-  * [[principles:Once And Only Once]]: This is the aspect of DRY which is concerned with the avoidance of code duplication. +  * [[principles:Generalization Principle]]: A generalized solution avoids duplication. 
-  * [[principles:Rule Of Three]]: This principle is a variation of Once And Only Once.+  * [[principles:Once And Only Once]]: This is the aspect of DRY which is concerned with the avoidance of (codeduplication. 
 +  * [[principles:Single Choice Principle]]: Duplication can also be duplication of information about a set of possibilities. The SCP is about this aspect. 
 +  * [[principles:Write Code That Writes Code]]: This is the code generation aspect of DRY.
  
 ==== Contrary Principles ==== ==== Contrary Principles ====
Line 56: Line 62:
 ==== Principle Collections ==== ==== Principle Collections ====
  
 +{{page>collections:OOD Principle Language#Box}}
  
 ===== Example ===== ===== Example =====
Line 72: Line 79:
   * [[wp>Don't repeat yourself]]   * [[wp>Don't repeat yourself]]
   * [[http://programmer.97things.oreilly.com/wiki/index.php/Don't_Repeat_Yourself|97things: Don't_Repeat_Yourself]]   * [[http://programmer.97things.oreilly.com/wiki/index.php/Don't_Repeat_Yourself|97things: Don't_Repeat_Yourself]]
 +
principles/don_t_repeat_yourself.txt · Last modified: 2021-10-18 21:27 by christian