Recording macros correctly and quickly is an art. Text objects help immensely, since they can handle a lot of edge cases in different places across your code.
One of my favorite tricks was binding @q to <space>. It really speeds up playback so I don't need to necessarily count occurrences or go recursive.