My rule of thumb has always been that, macros are great for general things but very bad for domain-specific things.
A macro like (logged-fn) that defines a function which logs the arguments passed, is wonderful.
But if you see a macro like (validate-report), something very wrong happened.