Tidy auto [Was: Re: @disable]
Jonathan M Davis
jmdavisProg at gmail.com
Sun Jan 17 05:32:48 PST 2010
bearophile wrote:
> This discussion clearly shows that the current semantics of the "auto" is
> not clean enough and it needs to be improved. To improve it D needs to
> adopt the strategy of using all attributes in a more tidy and semantically
> clean way, as Java does. Java doesn't compile "useless" or wrong
> attributes as D sometimes does.
>
> So it can be better to this to be a compilation error:
> enum x = 10;
> And accept only:
> auto enum x = 10;
> Or:
> int enum x = 10;
>
> Such tidy enforcement of attributes can be seen as fussy and sometimes it
> requires extra compilations to remove all the mistakes, but it helps the
> programmer understand in less time the semantics of those attributes. In
> pedagogy it's well known that when a student is learning something, it's
> much better if the rules are enforced in a strict way at the beginning.
>
> And I'd like in D2 the "override" to be always necessary (even when the
> code is not compiled with "-w") as in C#, to avoid other bugs. I can show
> an example of such possible bugs.
>
> Bye,
> bearophile
Indeed. It was bad when C defaulted functions and variables to int if you
didn't specify the return type or type respectively. C++ was smart to make
that illegal. All it does is invite errors. Saving those few keystrokes
isn't worth the added cost in clarity and potential bugs.
As for override, I second, third, and fourth that. I don't know why it
wasn't that way in the first place. Override was a very addition by the C#
guys and it's a lot more effective if it's required. Like not requiring a
type (or auto), not requiring it (and not allowing it when it isn't
applicable) invites confusion and errors. I'm all for requiring it.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list