It's probably a great idea!
I do take issue with splitting up long linear sequences of action into separate functions purely to reduce the average function length in your codebase:
function step1(){
// ...
step2(zarb, foo, biz);
}
function step2(zarb, foo, biz){
// ...
step3(zarb, foo, biz, gleep);
}
function step3(zarb, foo, biz, gleep){
// ...
}
Now you've actually added lines of source and reduced total readability considerably. Especially if you're now passing lots of parameters between each function to keep track of state. Yikes!
However, if you've managed to extract one or more lines into a pure function that serves a single, clear purpose (even if called only once), then you've improved readability:
function foo(){
f = getFrambulation();
g = deglorbFramb(f);
r = reglorbulate(g);
}
This likely won't be easy in real-world situations, but pieces of pure functionality can often be teased out if you think about it long enough.
You'll know you're on the right track when you have functions with nice verb names and when your parent function calls them and the whole thing practically reads like a paragraph of prose.
Then when you return weeks later to add more functionality and you find that you can actually re-use one of those functions, then oh, rapturous joy! What wondrous radiant delight!