Given a mutable property, it generally makes sense to only hold/store that property in a single place. When the data needs to change you only need to update a single field, and you can completely avoid bugs where the different fields get out of sync.An extremely simple example could be:The 'right' approach:class Owner {    String name;}class Dog {    Owner owner;    String getOwnersName() {        return owner.name;    }}The 'wrong' approach:class Owner {    String name;}class Dog {    Owner owner;    String ownerName;    String getOwnersName() {        return ownerName;    }}Experience has taught me that it's very seldom a good idea to break this rule of thumb. The risk of bugs being introduced and the increased effort required to understand the code almost always outweighs any benefit.My question is, is there a name for this rule/principle?Bonus points for linking to articles/blogs/etc. which make the argument for this clearly. Double bonus points for counter-arguments!
Holding mutable data in a single place
programming practices;patterns and practices
It's called a Single Source of Truth. As far as counterarguments go, that article points out its main drawback, which is difficulty scaling.  However, even in large distributed systems, you want to have a single source of truth locally.