Choosing a good book about a particular programming language from severals books on the subject can be difficult.
Some people like to look at reviews, but I find reviews more or less useless. Just because a book receives a good review doesn't mean that it is actually good from your perspective. Book reviews are the same as movie reviews - they are just other peoples opinions. Some people like it while others don't. Reviews only work, if you know for sure, that the person who is doing the review has the exact same taste and level of understanding as you.
What really matters is the method of teaching in the book. The method which the author uses must fit your way of thinking and understanding. This is the most important part.
Of course it is also important that the author actually knows what he's talking about, but the author doesn't necessary need to be a master of the programming language. Skillful programmers tend to be less good writers, they think technically and uses terms that are difficult to understand.
Often I find that small useful and practical online tutorials are much more useful than a book. After gaining some experience you can then buy a good reference book and then you don't need a particular book teaching you "how to program".
The size of the book doesn't matter, but I have noticed that often the biggest book is the least useful! Some authors make books big on purpose. Not because they need to be, but because they know that many people think that if a book is really big, it must be great and it must contain all the information that is needed. By making the book big with a lot of more or less useless information they can make the book look attractive and they can make the book more expensive.
Books like "The X Bible" or "The Y Bible" tend to be 900 to 1500 pages and they are very expensive, yet I have never found anyone of those so-called "bible" programming/computer books be useful. A small book on the subject usually goes right to the point with a short and good explanation with a couple of good examples. The so-called "bible" books are always stuffed with useless information.
Some books are very popular, but just because a book is popular doesn't mean that it fits your way of thinking and understanding.
So what can you do?
Make yourself an expert on a sub-subject before you buy the book!
When I need to choose a new book, no matter what the subject is, I try to gain some basic knowledge on a particular sub-subject of the matter first. If related to a particular programming languages it could be something like the "conditional statements" of the language. I try to read a lot of information online and if possible do some tests. When I feel I understand that sub-subject well, I then have something to compare the book with, and I then try to locate the biggest bookstore on programming languages. I then look at each book to see how it deals with the subject of "conditional statements".
Doing it this way I can compare the way the author explain the subject with the knowledge I already posses. I am then better skilled at making a good decision. If the author explains the subject in a way that I understand really well, and I understand the examples that he uses, then the chances are that he or she will explain the rest of the subjects in the book just as well. And I have found that for the most part this is true.
It is important that you look for a book that make use of examples that you can understand and relate to. I personally do not like books that uses complicated mathematically problems as coding examples. Even though I like mathematics, and of course you need some basic mathematics in almost every programming language, I am not a mathematician and I have difficulty relating to mathematical examples as I rarely deal with problems that are strictly mathematical in nature.
I once found a programming book on Java that only used a mathematical problem as an example. Chapter by chapter the author expanded upon the same example that slowly grew in complexity. Even though I understood the programming, I could not relate to the examples and I didn't understand the mathematics that the author used. As the examples became completely useless to me, so did the book.
Always look for a book with examples you can relate to.
A reference book is a must if you decide to program in a particular programming language, but a reference isn't the first thing you need. Many times a reference lacks explanation and examples and that's because it's just a reference. On the other hand if you can find a good reference book with examples and a little explanation then that is often the only book you will ever need.
Today many programming languages keep their references online and it is worth studying the reference before you buy a book, if you even need one.
As a conclusion you could say that a good programming book is a book that: