{
    "href": "/post/2014/08/16/dry-is-about-knowledge/",
    "relId": "2014/08/16/dry-is-about-knowledge",
    "title": "DRY is about Knowledge",
    "author": "pmjones",
    "markup": "html",
    "tags": [
        {
            "href": "/tag/aura/",
            "relId": "aura",
            "title": "Aura",
            "author": null,
            "created": "2020-09-14 21:51:57 UTC",
            "updated": [
                "2020-09-14 21:51:57 UTC"
            ],
            "markup": "markdown"
        },
        {
            "href": "/tag/php/",
            "relId": "php",
            "title": "PHP",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/programming/",
            "relId": "programming",
            "title": "Programming",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        }
    ],
    "created": "2014-08-16 15:34:06 UTC",
    "updated": [
        "2014-08-16 15:34:06 UTC"
    ],
    "html": "<p>From <a href=\"http://verraes.net/2014/08/dry-is-about-knowledge/\">Matthias Verraes</a>:</p>\n<blockquote>\n<p>\u00e2\u0080\u009cDon\u00e2\u0080\u0099t Repeat Yourself\u00e2\u0080\u009d was never about code. It\u00e2\u0080\u0099s about knowledge. It\u00e2\u0080\u0099s about cohesion. If two pieces of code represent the exact same knowledge, they will always change together. Having to change them both is risky: you might forget one of them. On the other hand, if two identical pieces of code represent different knowledge, they will change independently. De-duplicating them introduces risk, because changing the knowledge for one object, might accidentally change it for the other object.</p>\n</blockquote>\n<p>This is a great observation, one I had not considered before. It makes me feel a lot better about the very few and very minor duplications of code in the various independent and decoupled libraries in <a href=\"http://auraphp.com\">Aura</a>. In short, DRY is not a reason to couple code libraries with similar behaviors; instead, it is a reason to have a single canonical source of knowledge within a system.</p>\n"
}
