IMHO, best option is always proper grading on the surface... but there are some situations where that isn't possible (or at least not practical). In those cases, like AWJ was saying, use an inlet to catch a bunch of storm runoff to keep it away from buildings etc.
French drains... I don't want to start a fight on the internet but I'll just say not a big fan in most cases. They can fix areas that seem to stay wet / hold water after a rain, but they are so often used as a bandaid where proper grading wasn't done in the first place.