`alias newSymbol = existingSymbol` or `alias existingSymbol newSymbol`
David Nadlinger via Digitalmars-d
digitalmars-d at puremagic.com
Sun Nov 2 18:43:02 PST 2014
On Tuesday, 28 October 2014 at 08:29:22 UTC, Jonathan M Davis via
Digitalmars-d wrote:
> I see no reason to say anything about the alias syntax in the
> style guide.
Consistency, and thus less confusion/mental overhead.
I don't think that you'll be able to make a strong case for
"Either it should be considered fine to use, or we should
deprecate it." If we started with a clean slate today, there
wouldn't be a good reason to include the old syntax. It is an
outlier as we've generally moved away from C-style ordering of
types/declarations, and also can't do inline templates. And if we
agree that the new syntax is to be preferred – and it seems like
except for you we pretty unambiguously do –, I don't see why we
shouldn't put that out as an official recommendation.
Of course, breaking legacy code over this by deprecating the old
syntax might ultimately not be worth it. I don't see how this can
be construed as an argument against putting it in the style
guide, however. In fact, if we planned to deprecate it anyway,
this would rather be a reason _not_ to to bother with putting it
in the style guide first.
To summarize why the new syntax is better than the old one:
- It's more straightforward for newcomers, its order is the same
as for basic assignments. If you somehow find that unnatural like
you've claimed earlier, then you've merely trained your brain to
read alias assignments backwards compared to assign expressions.
- Arguably the new syntax also makes it easier to skim-read the
code, as the most important part (the symbol introduced) is at
the beginning of the line, not hidden after some potentially
multi-line template instantiation. Granted, you might say that
this is not very relevant, but I think you'd find it hard to
argue that the syntax is _less_ readable.
- The new syntax also has the advantage that it allows to easily
declare template aliases, for example:
---
alias Seq(T...) = T;
---
By the way, "using" is regularly recommended for use in C++11 and
up now instead of "typedef" for much the same reasons (just look
at the CppCon talks for some data points).
David
More information about the Digitalmars-d
mailing list