Give, do, hand back
Every function should be describable as: given these values, do one job, hand back one value. When you cannot say that sentence, the function needs splitting.
The cost of a good shape
A program of small honest functions can be changed without fear: a function can be replaced, tested, or moved because nothing else reaches into it. That is the payoff, and it is the same rule at every size.