I've always said "No" to my dogs and assumed they'd eventually understand that "No" means "Stop whatever it is you're doing." It has worked well with some of them. With others, not so much.
Dogs aren't good at generalizing. There's nothing inherently wrong with saying No, but it doesn't give them enough information. Say that your dog jumps on people. If you say No, the dog might get that something is wrong, but he or she doesn't know what.
Maybe my person will be happier if I jump higher? Or if I jump more to the right? Consistently saying "Sit" is more likely to produce a good behavior; the dog will understand what you want.
On of my dogs thinks bikes and motorcycles are annoying things that should be herded. She is part Border Collie, and trust me, they'll herd anything. She wants the bikes to stand still in a neat little group.
If we're out walking and she sees a bike she'll start barking like crazy and tug on the leash. I'm sure she thinks I'm pretty silly; if I'd just let go she could run over there and teach the bike to behave!
I've said No for about a year to no avail. The last couple of weeks I've changed my behavior, and every time we see a bike I tell her to sit. Now she looks up at me as if asking, "Do I have to?" and I nod and say "Sit." She sits down and watches the bike. No more crazy struggle! Win!
~ Maria Sadowski