Rather than repeating myself, here's a link to my Lounge post "How much defragmenting is enough?"
My bottom-line answer is that developing a "defragmenting strategy" is worth only as much as the real-world performance gain that you get from implementing it, so I'd say simplest is best. I suspect that occasionally using CCleaner would have a bigger impact (but who knows for sure?). If defragging after cleaning ever really made a noticeable difference, then I suspect that what you really need is a larger HDD, because your swapfile is probably getting fragmented. (You could put the swapfile in its own partition, but that's another discussion...)
As for me, I just modified the stock Task Scheduler Defrag task to run weekly during a time when I know my computer will be on, including specifying that it should run only if the computer is idle. Note that if you put your system to sleep overnight, rather than shutting down, the Defrag task will wake up your system in order to run.





