Gerhard Fiedler wrote: > On 2006-07-12 06:17:27, mystilleef wrote: > > >>But developers tend to pay more attention to given methods/functions >>less crappy names, at least when compared to data attributes. This >>stems from the fact that in many languages data attributes aren't >>usually part of the API, as well as the whole OO(Encapsulation) blah >>blah. > > > I'm not sure about which languages you are talking (pretty much all that > allow public methods also allow public attributes), but in general I think > you should get away from the distinction attribute vs method (which doesn't > make much sense in any language)
And even less when one have first-class functions and computed attributes... In Python, a method is nothing more than a callable attribute. > and start looking at the distinction > public vs private Since "public" and "private" are now strongly connoted with "language-inforced access restriction", I'd rather talk of "interface vs implementation" > (which is what you really are talking about) -- and start > giving the appropriate care to naming public entities, no matter /what/ > they are. (Besides, I don't know many coding rules that say that creating > an accessor get/setTemporaryBuffer that acts on the private member tmp is > good style.) > > I'm just starting to get started with Python, but it seems that the leading > underscore marks private entities. Yes, it means "implementation, don't touch or you're on your own". > So why don't you precede everything with > an underscore that doesn't have a name that fulfills your criteria for a > decent public name -- no matter what kind of entity it is? > > It seems you are basically complaining that you used a crappy name in a > public API. Obviously... And blaming the language for this won't help. > Well... you shouldn't, not in Python, and not in any other > language :) And there's no way around it, not in Python, and not in any > other language, than to rename that entity in the public API. Which can be > a major hassle, close to impossible. There are all kinds of public APIs > with crappy names (using accessors and all :) that got created early on and > never changed. Stuff happens. > > Maybe you didn't know about the underscore way to mark private entities. > Maybe this doesn't work as I think it does If you think that single leading underscores have a special meaning for the compiler/interpreter, then you got it wrong. It's a convention. Like using ALL_CAPS for pseudo-constants. Nothing prevents you from accessing implementation or modifying "constants" - but then you're on your own and must not complain when something breaks. -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list