3 ms·
Better option: just wrap it in a unique struct. There are perhaps only 3 numbers: 0, 1, and lots. A fair argument might be made that 2 also exists, but for any
by o11c 10mo ago
Better option: just wrap it in a unique struct.
There are perhaps only 3 numbers: 0, 1, and lots. A fair argument might be made that 2 also exists, but for anything higher, you need to think about your abstraction.
- pixl97 10mo agohttps://en.wikipedia.org/wiki/Zero_one_infinity_rule https://en.wikipedia.org/wiki/Zero_one_infinity_rule
- piekvorst 10mo agoNice article, never seen that. I’ve always thought it’s good practice for a system to declare its limits upfront. That feels more honest than promising ”infinity” but then failing to scale in practice. Prematurely designing for infinity can also cause over-engineering—like using quicksort on an array of four elements. Scale isn’t a binary choice between “off” and “infinity.” It’s a continuum we navigate with small, deliberate, and often painful steps—not a single, massive, upfront investment. That said, I agree the ZOI is a valuable guideline for abstraction, though less so for implementation.
- o11c 10mo agoThere's a reason I prefer "lots" over "infinity". For your "quicksort of 4 elements" example, I would note that the algorithm doesn't care - it still works - and the choice of when to switch to insertion sort is a mere matter of tuning thresholds.
- kragen 10mo agoThe zero-one-infinity rule is not applicable to the number of bytes in Poly1305 nonces and ChaCha20 keys. They are exceptions.