My general rule of thumb is that a function should be small enough to be entirely visible on screen without having to scroll. It's dependent on screen resolution & font size of course, but I find that having to scroll down adds some cognitive overhead to understanding the whole of a function.
Following this line of thought I've become a lot more precious about vertical whitespace & I've adopted BSD style curly braces.