4 ms·
> Not written in the particular arbitrary style that I'm used to Like "arbitrary styles" such as "a function shall not be 500 lines long".
by zabzonk 6y ago
> Not written in the particular arbitrary style that I'm used to
Like "arbitrary styles" such as "a function shall not be 500 lines long".
- trade_unionist 6y agoArbitrary like don't use reflection when a dll will do.
- Retric 6y agoAn individual function can quite reasonably be 500 lines long. A giant case statement handling routing is one example. More controversially, if I am gong to need to do a lot of ugly compatibility hacks then I prefer to consolidate them and thus keep most functions clean.
- awinder 6y agoCyclomatic complexity is one of the more well-rigorously studied measure of code quality, I don’t know if I’d pick that hill to die on.
- nemetroid 6y agoA function can be five hundred lines long without having high cyclomatic complexity.
- deleted 6y ago[deleted]
- Retric 6y agoThe average size of functions is independent of the programs total cyclomatic complexity.
- rcxdude 6y agoIt's rigorously studied but it's a crap thing to put an arbitrary restriction on, because it doesn't correlate well enough to warrent that. If you put a restriction on it, bad code still gets through fine while some good code gets made worse to bypass the checks (the biggest one is large switch statements acting as dispatch: Perfectly understandable, but if you split such a thing into multiple functions magically the cyclomatic complexity goes down to satisfy the linter but the code has just gotten harder to understand for static analysis and humans alike).
- burfog 6y agoJohn Carmack, the famous Id Software programmer, tried it out for a few thousand lines of space rocket code, and he liked it. He argues why giant huge functions can be good for maintainability: http://number-none.com/blow/john_carmack_on_inlined_code.html http://number-none.com/blow/john_carmack_on_inlined_code.htm... Previous HN discussions about that: https://news.ycombinator.com/item?id=12120752 https://news.ycombinator.com/item?id=12120752 https://news.ycombinator.com/item?id=8374345 https://news.ycombinator.com/item?id=8374345 https://news.ycombinator.com/item?id=18959636 https://news.ycombinator.com/item?id=18959636