DIP4: Properties
Nick Sabalausky
a at a.a
Fri Jul 24 13:16:31 PDT 2009
"Chad J" <chadjoan at __spam.is.bad__gmail.com> wrote in message
news:h4cv6h$st6$1 at digitalmars.com...
>
> Have you checked out haXe's syntax for properties?
> http://haxe.org/ref/properties
>
Yes, in fact, I've been using haxe a lot lately for work. It certainly beats
AS2 and PHP, but there's still a lot about it I really dislike, and it's
property syntax is one of my biggest complaints.
For those not familiar with haxe, compare the following property in my
current D proposal, the equivilent C#, and the equivilent haxe:
--------------------------------
// D, current DIP4
public int foo
{
get { return value; }
set { value = set; }
}
--------------------------------
// C#
private int _foo;
public int foo
{
get { return _foo; }
set { _foo = value; }
}
--------------------------------
// Haxe
public foo(get_foo,set_foo):Int;
private _foo:Int;
private get_foo():Int { return _foo; }
private set_foo(value:Int):Int { _foo = value; return value; }
--------------------------------
That's absolutely horrific for anyone who even remotely values DRY and
readability (and formatting the the getters/setters on multiple lines
doesn't help). There are a bunch of problems with it, but the one that
really sticks out to me is: why in the world should I have to specify
special getter/setter names for every single property? What in the world is
the point of that? That's like being expected to specify a special name for
every 'if' block in the program. I don't want or need a special name, just
give me a damn if/getter/setter/whatever!
More information about the Digitalmars-d
mailing list