As a film, I think Batman Begins is the best of them. As far as writing, directing, structure, plot, etc.
I think Dark Knight gets a lot of free pass because of Ledger's Joker. Dude was.....just beyond incredible. He more than deserved his Oscar, and he more than deserves all of the praise he gets. I'm a big Heath Ledger fan, and I have seen Dark Knight a ton of times, but I still cannot see Heath Ledger on that screen, I only see Joker. It's insane.
That said, the movie is good, but still has a good amount of problems. It does get preachy, it is almost two movies put together, with all of the Two-Face stuff being smashed into a Joker movie, doing a major disservice to Two-Face. Also the whole sonar...computer spies....whatever thing they had going on where Batman could tap into everyone's phones was just bad. It was preachy, it was sloppy, it was illogical, and just completely unnecessary. I mean, just remove the entire concept from the movie and it's already a lot better. Keep Harvey as Harvey and make him Two-Face either at the very very end or in the next movie and you've got a better movie.