Never theorize before you have data. Invariably, you end up twisting facts to suit theories, instead of theories to suit facts.
Robert Downey Jr plays the role of eccentric and overly nuts Sherlock Holmes filled with an energetic spark for adventurism. Robert Downey Jr is the perfect actor to have been cast as Holmes. He nails the role really well. Out of all the many interpretations of Sherlock Holmes, Guy Ritchie's has to be one of the best (next to Benedict C*mberbatch's Sherlock TV series). This Sherlock is more of an outgoing, deep thinking, plans everything before he attacks kind of guy. Downey Jr adds that "almost Tony Stark" sarcasm included with a top-notch British accent too, which makes his character even more believable.
Jude Law plays Sherlock's companion partner, Dr. Watson. Not a big fan of Jude Law, he has made some good movies(Sky Captain and the World of Tomorrow), but to me, he just doesn't have that appeal factor. Although, that is not the case in this film. As Dr. Watson, Law makes up for some of his movies I think were disappointments. Seeing how Jude Law is a huge Sherlock fan of the genre, he takes care of his role and cherishes it. Jude Law does a fine acting job as Watson, he and Downey Jr have that unlikely chemistry and just blend well together. Rachel McAdams also appears in this as Holmes love interest, Irene Adler. She does good as always in her films; knows how to play the part well too.
The only problem I had with this movie was not the amazing set pieces, music score, and visual effects used for the explosive action (which makes this a completely different telling of the Holmes legend) but it was the slow going pace it had up until the very end and the movie was, at times, real predictable. I don't like predictable movies; this had a few moments of those. Over the years, I've come to like the movie a lot more now due to the sequel A Game of Shadows and the witty writing that is perfectly delivered by Robert Downey Jr.