Jeff’s reason for disliking properties is because they look like fields – so developers who don’t understand the difference will treat them as if they’re fields, assuming that they’ll be cheap to execute etc.
Personally I disagree with him on this particular point – I find properties make the client code much simpler to read than the equivalent method calls. I agree that developers need to know that properties are basically methods in disguise – but I think that educating developers about that is better than making code harder to read using methods. (In particular, having seen Java code with several getters and setters being called in the same statement, I know that the equivalent C# code would be a lot simpler to read. The Law of Demeter is all very well in theory, but sometimes foo.Name.Length
really is the right thing to use…)
(And no, automatically implemented properties don’t really change any of this.)
This is slightly like the arguments against using extension methods – I can understand the reasoning, but the practical benefit (when used sparingly) outweighs the downside in my view.