Why the fuck would I tip someone who's shit at their job or plain rude, if you are a dick head I will treat you as such.
It's a bit like buying the mechanic who fucked up your car a case of beer etc., if people do a bad job let them know, so they 1. can improve or 2. find something else to do.
The problem is that your tip is always split between a variety of people. It's always split between the cooks, the finishing person, and the waiter, and sometimes it's split across the waitstaff. So if you liked the food and hate the service, you're screwing over the chef (who you liked) to get back at the waiter. Unless the experience is truly horrid (I got ignored by a bartender for 45 minutes straight while he talked to his coworkers), just tip 20%.