Mathias Verraes writes about domain-driven design, event sourcing, distributed systems patterns and software design principles, mostly in a PHP context.
HN commenters repeatedly cite his post 'DRY Is about Knowledge' as a clear explanation of the principle, and also link his Erlang 'Let It Crash' post.
Yes, after a few years of Java we all end up there. Frankly it's a good argument for the Erlang "Let It Crash" philosophy.
https://verraes.net/2014/12/erlang-let-it-crash/
If IOException on a read is truly happening, and it isn't just a case of a missing file, there are serious issues that aren't going to be fixed with a catch-and-log, or be able to be handled further up the call stack.
The definition is highly summarised, which (like many definitions) makes it only useful if you already understand the concept, and you need a way to remember it. Or the definition can be a framework for explaining it to others, which is how I use it in workshops.
A more real world story of DDD in practice is this blog post:
https://verraes.net/2021/09/design-and-reality/
I was going to say you were talking nonsense, but then realized I’d replaced the original post in my mind, by this much nicer post that someone else linked in this thread:
https://verraes.net/2014/08/dry-is-about-knowledge/
They essentially say the same thing, but one is better than the other.
Some good resources about DRY:
> DRY is about knowledge. Code duplication is not the issue.
https://verraes.net/2014/08/dry-is-about-knowledge/
> Every piece of knowledge must have a single, unambiguous, authoritative representation within a system
https://wiki.c2.com/?DontRepeatYourself
Couldn't agree more. There's a great decade-old blog post by Mathias Verraes which illustrates this well, I keep coming back to it: https://verraes.net/2014/08/dry-is-about-knowledge/