When criticizing, it helps to have a clear reason why. It may be a good faith attempt to help the other person, or because their actions affect some other thing they are contributing to, or because their actions have unintended consequences for someone else. Regardless, there should be some benefit beyond one's own gratification. If you catch yourself enjoying the act of criticizing others, it's probably a good idea to doublecheck your motivations and results to make sure that it's actually for someone else's benefit.
Bingo - Good criticism is a matter of considering how it will be taken, because you aren't feeling good about the criticism itself, but rather the results you are trying to achieve. Bad criticism is enjoying the criticism itself.
The fact that the first reaction to any even remotely negative feedback is defensive is what's bad. I feel this is why some people don't like code reviews. What's also bad is that often feedback is given as a put-down rather than to help (i.e. not in good faith), or when negative feedback is given in front of others.