3 ms·
> You cannot fix essential complexity with any kind of design. If there are options in design, your code will reflect them at some layer. That’s certainly true
by kd5bjo 7y ago
> You cannot fix essential complexity with any kind of design. If there are options in design, your code will reflect them at some layer.
That’s certainly true; my favorite method at the moment for this sort of thing is to make it data-driven: have a structure that contains all of the parameters that change based on vendor (including enums/flags for optional behaviors) and a single process implementation that refers to it when needed.
- AstralStorm 7y agoYou end up with a big if-then block. Essentially spaghetti but localized. A joke I sometimes make is that spaghetti is best of a plate or in a box from which it cannot escape. Otherwise it would spill. Ravioli does not spill but the relationships become implicit.
- kd5bjo 7y agoLocalized is good. It means that the next time there’s a new thing, there’s only one place you need to change to specify its unique set of properties. Often, this can even be removed from the code entirely into a configuration file, so that a recompilation isn’t necessary for every new situation.