Possible @property compromise
Steven Schveighoffer
schveiguy at yahoo.com
Wed Jan 30 17:26:26 PST 2013
On Tue, 29 Jan 2013 23:57:14 -0500, Jesse Phillips
<Jessekphillips+d at gmail.com> wrote:
> Sorry I have to oppose this. It is in no way a compromise as it is
> completely different from everything suggested. I'm going to take this
> opportunity to highjack your thread.
You are welcome to it! I don't know if there is a thread on this
newsgroup about properties that hasn't been hijacked.
I should explain that my reasoning behind this is:
1. Walter wants to get rid of @property
2. Dispite 4 years of assuming @property will be implemented, the old
D1-style crap is still in place.
3. I've been using Objective C for the last 10 months, which implements a
similar scheme to properties.
The compromise is: OK, you want to ditch @property? I can live with that
as long as we have some way to designate properties. How about this?
> Can an pro- at property members claim that the current behavior is what you
> want? I believe this answer is no.
The answer is no, but only because what we asked for was never
implemented. What was ORIGINALLY designed with @property (enforcement of
parentheses on functions, enforcement against parentheses on properties)
is what we wanted.
> It seems at least some members for @property feel that currently
> functions are being annotated with @property that shouldn't be.
This is unavoidable. It's like saying I feel some functions are
incorrectly named. @property has nothing to do with it. There is no
"right" answer to whether something should be a @property or not, just
like there is no "right" name for a function.
> It also seems those for @property aren't fighting optional parens as
> much? Can we discuss fixing the issues we have with this. I think a good
> change is to require parens if returning a callable (opposite of Walters
> suggestion).
Yes, if the choice is between having the previous implementation (D1) and
optional parentheses with a way to designate properties, I'll choose the
latter.
> If I have my above claims mostly correct, then I'd say @property needs
> to be put back in the drawing board and re-implemented.
If you want to replace @property, we need a replacement. @property still
serves a purpose, even in it's currently crippled form.
> I'd be for removing it from the language and if we decide on what in
> needs to enforce and should be part of the language, then its
> implementation is completed in a feature branch and remains out of the
> language until it meets the needed enforcement and behavior.
Fine, but leave @property in until you have completed the replacement
feature.
> Granted I'm not concerned if it doesn't ever come back. I believe it has
> a legitimate role in allowing a change from field to function without
> harming usage that can not be achieved without an annotation. However it
> seems we can't achieve this with the combination of features D employs.
Ah, your subtle bias shines through ;)
The real fact of the matter is, if D never had the "hack" properties it
did, I actually wouldn't care. Calling functions instead of setting or
getting properties is not that horrible. But writeln = "hi" is horrible.
>
> I don't agree with the argument that properties provide a convince to
> identify low overhead access. While I'm not experienced in this area,
> profile code should indicate where performance is poor, it would be bad
> to assume "that looks like a field, so it must not be where the
> performance is bad."
In general, the idea is to implement fields without having to create
storage for them. It will never perform as well as a field.
>
> ---------------------
>
> So let us decide to keep optional (), fix what we can there.
>
> Define what is desired of properties, but for now get rid of what we
> currently know as @property. Then with a complete proposal, we can say
> it must meet these goals or it won't exist. Since optional () remain,
> introducing @property again will not break code and we will only deal
> with broken code now (and there would be some just to fix the current
> behavior and its disconnect with -property)
In other words, go back to D1 properties. No thanks.
-Steve
More information about the Digitalmars-d
mailing list