3 ms·
The quote, for people on mobile: > A particular type of complexity is over-engineering, where developers have made the code more generic than it needs to be, o
by pitaj 7y ago
The quote, for people on mobile:
> A particular type of complexity is over-engineering, where developers have made the code more generic than it needs to be, or added functionality that isn’t presently needed by the system. Reviewers should be especially vigilant about over-engineering. Encourage developers to solve the problem they know needs to be solved now, not the problem that the developer speculates might need to be solved in the future. The future problem should be solved once it arrives and you can see its actual shape and requirements in the physical universe.
- baby 7y agoThanks! I agree so much. Zero-cost abstraction is a misnomer.
- uryga 7y agoisn't "zero-cost abstraction" shorthand for "zero-performance-cost abstraction"? i.e. computer, not human, performance?
- baby 7y agoIt is! Which is why I don’t like the term. It often masks the fact that it has a cost in complexity.
- uryga 7y agoi've never read it that way! could you give an example of that?
- ahartmetz 7y agoTwo examples in C++: virtual method dispatch via vtable (in C you'd implement the same mechanism manually), templated generic code. C++'s generic data structures and algorithms are faster than C's because they don't have to use indirection through pointers. The compiler creates specialized code for each type instead. It causes binary size bloat, but execution time is low.
- uryga 7y agoso what's the "cost in complexity" here? the complexity would be there whether you went with a a hand-rolled or "zero-cost" version (at least that's the idea), except the "zero-cost" version should require less code and thus be easier to maintain.