The answer depends on your goal -- often making something "reusable" takes more effort at the onset but of course, pays out later when reused -- provided of course, that it's truly reusable. Sometimes this ability is overrated ... IMO ...
The true answer to this will be answered as you write code -- when you find yourself saying, gee, I just wrote something like this last week.
My "toolbox" consists of string, math, network, database, file, logging, and a host of other "library" routines (assemblies, etc) that I can quickly include as a references. Of course, the key to making this a living library is to keep the code of these library items truly separate from the app/code being developed.
hope it helps ...