Just want to throw my 2 cent in :)
2012/5/30 Tony Marston <t...@marston-home.demon.co.uk>
> "Ashley Sheridan" <a...@ashleysheridan.co.uk> wrote in message
> > On Tue, 2012-05-29 at 17:06 -0400, Paul M Foster wrote:
> >> On Tue, May 29, 2012 at 08:52:46AM +0100, Tony Marston wrote:
> >> > On May 21, 2012, at 8:32 PM, tamouse mailing lists wrote:
> >> > > A rule of thumb is no more than 50 lines per
> >> > > function, most much less. Back in the day when we didn't have nifty
> >> > > gui screens and an 24 line terminals (yay green on black!), if a
> >> > > function exceeded one printed page, it was deemed too long and
> >> > > for refactoring.
> >> >
> >> > I think the idea of setting an arbitrary limit on the number of lines
> >> > that a
> >> > function should contain is quite ludicrous and something which I will
> >> > completely ignore. If a function requires a hundred or more lines then
> >> > so be
> >> > it. The only reason to take a block of code and put it into its own
> >> > function
> >> > is when that code is likely to be called more than once so that it
> >> > conforms
> >> > to the DRY principle. If it is only ever used in one place then there
> >> > is no
> >> > point.
> >> >
> >> > The problems I have with creating lots of small used-only-once
> >> > functions is
> >> > as follows:
> >> > - you have to create a meaningful name for each function.
> >> > - all those functions should be arranged in alphabetical order within
> >> > their
> >> > containing file - having them in a random sequence makes it difficult
> >> > to
> >> > find the one you want.
> > And yeah, alphabetical order? Really?
> This is a throwback to my 3GL days when all components within a file were
> arranged in alphabetical sequence so that they were easier to find when you
> looked at the printed listing.
> > Group them by similarity, sure.
> > But today, with IDEs that will jump straight to functions and class
> > methods, and the good ol' find tool on every editor I've ever seen, is
> > sorting them alphabetically really necessary? Seems like a waste of time
> > that is likely not going to be done by fellow developers working on the
> > same codebase.
> I have never come across an IDE that jumps to a function when you click on
> its name, so how does it return to where you jumped from?
At least PhpStorm and Eclipse have a feature to return where you come from.
I haven't seen an IDE, that is _not_ able to jump to a functions or methods
source for a long time now.
> Rather than artificially reduce the size of a function to satisfy someone
> else's limited attention span I would rather use the scroll wheel on my
> mouse. Scrolling up or down within a single function is easier than
> searching/finding/jumping to a series of sub-functions which may exist at
> random locations within the same file.
If the functions were named properly you don't have to follow every
execution path to the deepest deep. Or do you reading PHPs C-source, just
because a wild "substr()" appeared? When you see a method "loadFromFile()"
and the IDE tells you, that it expects a $filename as parameter, why should
you jump there just to make sure, that the method loads something from a
file by the filename given as first parameter?
> I will only split a large function into sub-functions when it makes sense
> do so, and not because some nerd cannot scan more than 20 lines at a time.
The question I ask myself is: Why ^should^ a scan more than 20 lines at a
time, if it is possible, to make it clearer, but another nerd decided, that
it is too much work (or whatever). Maybe it's may "attention span", but I'm
usually slightly bugged, when I have to read code monsters. Compared to a
book it's a kind of "One chapter in a single sentence".
> Tony Marston
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php