On Tue, Jul 16, 2013 at 10:25 AM, <fronag...@gmail.com> wrote: > Again, thanks for all the responses. I'm curious, though, what exactly is the > rationale for making functions so small? (I've heard that the function > calling of Python has relatively high overhead?)
A function should be as long as it needs to be - neither longer nor shorter. If you can name a function appropriately, and it's doing exactly what its name suggests, it's the right length. This generally produces short functions rather than long ones, but if the right length for a function exceeds some arbitrary limit, let the function be longer. For instance, I have a single function that's a bit over a page in length, because it's one big switch block (this isn't in Python, obviously), doing one thing fairly cleanly. Larger than that would have to be called code smell, but there's certainly nothing wrong with having the odd function here or there that's over Steven's dozen-line estimate. There'll also be plenty of really short functions - even one-liners. The largest single function in any of my code, I think, is a gigantic double-nested switch block in PHP .In any decent language, that would be divided up not just into functions but into files, but PHP has some stupid restrictions on its include directive that make that impractical. So syntactically it's one massive function, but logically it's about seven or eight separate sub-blocks, and the code is laid out in those blocks. It's just that the technical nesting level never actually hits zero in between them :) Have to confess, though, I've had some fairly large functions in C++ (not as big as the aforementioned, but still fairly large - what's the next one down from gigantic, megantic? [1] would suggest so), which in some cases could be split if I felt like putting in the time to do it. ChrisA [1] http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=370794 -- http://mail.python.org/mailman/listinfo/python-list