This is something I've been grappling with as well. My current 'solution' is to have separate notebooks with a function in each one (organized in a 'Functions' directory). Then I load the function into memory in another notebook by loading that note...