I agree Mel, one has to strike a pragmatic balance. Creating endless layers of abstractions often obscures what is going on. I would not count guard statements in line counts indicating complexity of a function. They are clearly marked, low complexity and easy to skip when you read a function to understand it. I think Linus Torvalds with his Kernel coding guidelines is much more pragmatic. He also insists on short functions but will allow longer functions for low complexity code like a long switch-case statement e.g. Writing clear code is more an art than a science. People pretend they can accomplish that by simply adhering to some fixed rules as if it was a scientific problem to solve.