Skip to content

Instantly share code, notes, and snippets.

@lyoshenka
Last active August 23, 2023 21:18
Show Gist options
  • Save lyoshenka/0a43205aa9a072b196ff87e2c689a8b9 to your computer and use it in GitHub Desktop.
Save lyoshenka/0a43205aa9a072b196ff87e2c689a8b9 to your computer and use it in GitHub Desktop.
Keep this in mind
@nrjohnstone
Copy link

nrjohnstone commented Sep 22, 2017

DRY is a dangerous mantra when applied without thinking... If your crossing architectural boundaries, and you think that it's "DRY" to share your dto from one boundary to another all the way down to your persistence layer because, if you don't, your repeating yourself, then your going to be asking for a world of pain in terms of coupling between layers ... DRY within a bounded context / specific scope is the only way to apply this principal...

The rest of your principles are well written and unfortunately I don't see enough like them in other places.

@kauffj
Copy link

kauffj commented Nov 21, 2017

  1. I propose these be numbered.
  2. I propose "no magic numbers/strings — use constants instead" be modified (or a new rule added) to cover that strings are only for messages for people (e.g. to be displayed, for log files, etc.). If you are doing a comparison against a string, especially in more than one place, that is a strong sign it should be a constant. I think magic strings/numbers specifically refers to input that triggers hidden or non-standard behavior, which is a bad idea even if you are using constants.

@rchasman
Copy link

rchasman commented May 5, 2018

Great Maxims Lyoshenka

I love DRY as much as the next guy but when you are moving fast, I think sometimes it’s okay to save things to factor out later. What do you think about the Sandi Metz saying “duplication is far cheaper than the wrong abstraction”.?

Thanks for the Maxims!.

@lyoshenka
Copy link
Author

@rchasman he's probably right. As the last maxim says, "first you don't know the rules, then you learn the rules, then you break the rules".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment