DEV Community

Discussion on: We Should All Be Writing WET Code

ingosteinke profile image
Ingo Steinke

You make a good point against premature abstraction and against overloading components with too many options. The latter can be avoided by composition rather than repetition. While I don't think, WET should seriously be a best practice, I know many situations where some repetition is fine and where I would rather focus on getting things done than winning a clean-coding award in the first place, even more so as you might not need it (YAGNI) later. But often there is a time to refactor and make the code cleaner, before it gets messy.

Abstraction is helpful when done right!

Avoid premature abstraction, but abstract when repetition patterns become clear and you find yourself writing the same come again for the third time ;-)

voboda profile image

Do any situations come to mind that could illustrate composition over DRY or WET?

ingosteinke profile image
Ingo Steinke

You mentioned a modal component that is used to display various types of notifications. Instead of adding more parameters to one common component, you could have different components that use this one combined with other components / interfaces like buttons, groups of buttons, style wrappers etc.

I found Alexi Taylor's article: React Component Patterns worth reading. It explains composition patterns using practical examples in ReactJS.

Thread Thread
nieuwepixels profile image
Nieuwe Pixels

Right, I think "modular" is the key here. Can we set up the component in such a way, that we can expand on it if needed, without breaking anything else. Atomic design could be of great benefit here.

// base styles
@extends ._base_popuptitle;

You could extend it any way needed. Be thoughtfull though, to not be too specific, but stay somewhat generic.

This can be applied then for each contentsection you have or add later, without breaking stuff.

It's something you need to get the hang off, but it can help greatly.

msucorey profile image
Corey Wofford

Rule of 3

nettab profile image
NettaB Author

my point exactly :)