More thoughts on properties and methods
Wow – thanks for your
feedback on this issue. I am
going to start bringing you people more of my hard problems. As of a few minutes ago the consensus
seems to be slightly in favor or going with methods in the case I outlined
(about 16 pro methods to 9 pro properties). There were really great points throughout
the discussion, I will not highlight them all here, you should really go read
them if you are struggling with this issue.
But I couple of recurring themes I
thought it was worthwhile to comment on:
- Fix it in the docs… I hear this
argument many times a day. Essentially whenever a problem seems
too hard to solve we “punt” and fix it in the docs. As if 100% of our users read the docs
end-to-end before they begin writing code. Now I am a huge fan of the docs, I
think we have done some amazing stuff in V1 and V1.1 but that doesn’t change
the fact that many users don’t read the docs and should not have to. In fact in our API reviews we look at
the “header file” view of the types (just the signatures of the methods).
You should be able to intuit
about an object model from just that information. Once that is simple, the
docs will be simple, the IDE experience will be simple,
etc.
- Network Transparency… I will not
go into detail here, but I’ll just say that I don’t buy the argument that we
will ever have networks that are robust, fast and predictable as needed for
effective transparency… I am sure you can grab one of Don Box’s many talks for the
PDC and get the same message.
- Local Caching … A couple of you
wanted to change the question – a good PM skill ;-). You wanted to know if we could cache
the values locally then use properties to the local cache. Personally, I think that would work in
general, but for this area the feature owners believe the 90% scenario
requires have live data.
- The debugger – Yes, the debugger
does evaluate properties by default. I added a very brief discussion of this
to the design guidelines doc thanks for highlighting
it!