# DRY vs RYE

DRY is a good first-pass rule of thumb, but RYE is optimal. “Repeat yourself efficiently”

Examples:

1. Add a data-attr to an HTML element so that some data can be read from it using $elem.data() rather than a longer jQuery selector chain$elem.closest(‘.thing’).find(‘otherthing’).val()
1. Benefits of concision, readability, and performance
2. Database normalization
1. Foreign key relationships are duplicate but useful to improve database query speed when only a subset of information is needed
3. Complexity management
1. When a URL or string is repeated many times, put it in a constants service for scale and maintenance
2. But, when a constant is only repeated once, twice, or even a few times this doesn’t make sense. You are adding a service to develop and integrate with very little benefit. In particular, consider strings that are unlikely to ever need an update, such as \$el.css(‘color’, color); that color string will prob never change. Also consider numbers – why have CONSTANTS.FIVE_HUNDRED instead of 500? Even if 500 is used 500 times, it wouldn’t make sense to make this a constant. Constants are useful in part so you have a central location to update; when will you ever need to update the constant value FIVE_HUNDRED to anything other than 500? You won’t. That’s overengineering.

I would say, though, “When in doubt, DRY it out”

• 1
•
•
•