Accessors, byLine, input ranges
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Fri Jan 29 08:45:51 PST 2010
Michel Fortin wrote:
> On 2010-01-29 10:40:23 -0500, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> said:
>
>> I'll tell you what I'd have liked: a landslide of responses to my
>> question revealing my mistaken ways and clarifying without a shade of
>> a doubt that byLine should be a @property. Or not. (I don't even care
>> which.)
>>
>> The fact we're having a debate about this (and Steve even says it's a
>> clear cut case and there are other more ambiguous!) is worrisome. Take
>> this: I got different answers from _supporters_ of @property!
>
> The problem entirely reside on the ambiguous semantics of 'byLine'. The
> name makes us think it does something while it does something else
> (consuming a line). If it did what we'd expect it should be a property,
> but since it does not it shouldn't be. Fix 'byLine', either by changing
> the name or changing what it does, and whether it's a property or not
> will become clear.
This is a very good point! Using byLine as an argument against
@property is just silly, as it is badly-named to begin with. The name
itself doesn't really tell you what it does, you have to read the docs
or see it in the context of a foreach to understand it. The omittable
parentheses are not the problem here. A more descriptive name would be
either of these, depending on how the function actually works:
readByLine() // not a property
lines // definitely a property
byLinesRange // also definitely a property
>> A good convention is one that you apply without wasting time to think
>> of it every single time you use it: naming conventions, braces
>> conventions, even most class vs. struct conventions. The well-defined
>> ones work great because _they save you time_.
>
> Well, you should probably care a little more about your naming
> convention. It's confusing, and it'll probably end up waisting the time
> of some people who'll wonder why it consumes lines before you read them.
> I was absolutely sure it didn't before someone pointed it out to me.
Speaking of Andrei's naming convention; in the case of empty() there
were a lot of protests to the name, because people couldn't tell whether
it was a property or an action. The @property annotation mends that.
-Lars
More information about the Digitalmars-d
mailing list