I've used many different types and they all have their pros and cons.
For the past two years I've been using a WJ infrared model. It works very well for telling you the surface temperature in a split second. Problems I've had with it.....occasionally it switches to Celsius and for some reason it's hard to get it to switch back. Also, it's possible that the surface temperature can be several degrees warmer than the bottom.
I've also used several conventional stream thermometers. They are accurate and do not depend on batteries to work. They will also tell you the bottom temperature. Problem is you have to hold it in the water for about a minute for an accurate reading. This can be a tough chore when the water is frigid, deep or swift. I've used heavy line to suspend it and this works ok in slower moving water. You also have to be careful with thermometers containing mercury as not to break them in the stream.