A fellow co-worker taught me by example to try to always phrase each code review comment as a question.
Instead of
> This loop never terminates
Write
> Does this loop terminate?
Instead of
> There's no test for this condition
write
> Is there supposed to be a test for this condition?
I'm probably not thinking of good examples but for some reason, more often than not, the direct comments came across as "you screwed up!" where as the questions instead made it feel like I was discovering my own mistakes rather than have someone tell me I made one.
It's probably subtle and maybe some people will think it's dumb but I really appreciated it. It felt like it went a long way toward me feeling like saw my own mistake and fixed it before I checked it in instead of the direct approach which made me feel stupid and embarrassed.
I've tried to adopt that approach (though it's a struggle to remember to apply it).