In object-oriented programming, there is no exact rule on the maximum length of a method , but I still found these two qutes somewhat contradicting each other, so I would like to hear what you think.
In Clean Code: A Handbook of Agile Software Craftsmanship, Robert Martin says:
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long.
and he gives an example from Java code he sees from Kent Beck:
Every function in his program was just two, or three, or four lines long. Each was transparently obvious. Each told a story. And each led you to the next in a compelling order. That’s how short your functions should be!
This sounds great, but on the other hand, in Code Complete, Steve McConnell says something very different:
The routine should be allowed to grow organically up to 100-200 lines, decades of evidence say that routines of such length no more error prone then shorter routines.
And he gives a reference to a study that says routines 65 lines or long are cheaper to develop.
So while there are diverging opinions about the matter, is there a functional best-practice towards determining the ideal length of a method? How can I determine what'll work best for my project? What should I be identifying to make the determination for myself?