Discussion Thread: DIP 1044--Enum Type Inference--Community Review Round 1

XavierAP n3minis-git at yahoo.es
Sun Nov 27 07:48:48 UTC 2022


On Sunday, 27 November 2022 at 03:28:06 UTC, cc wrote:
>
> Having to copy/paste:
> ```d
> alias A = AttackType;
> alias W = WeaponType;
> alias M = MovementType;
> ```
> is unideal.  And the broader the scope they're declared in the 
> more likely they are to conflict with other shortened alias 
> names.
>
> And then when you have, say `enum EntityState` and `enum 
> EnemySprite`, what then?  `alias ETS`, `alias ESPR`... just 
> further increasing symbolic clutter and cognitive load.

Indeed here we hit the whole rationale of the DIP. Current enum 
syntax in modern languages like D, modern C++, C# etc departs 
from C purposely. I see how it can be tedious when importing C 
enums named in compensation e.g. IMG_INIT.IMG_INIT_jpg. In these 
or other exceptional cases aliasing can help.

But as a general practice shortening names for the sake of 
shortness is very bad practice. This is more genenral than enums, 
and recommended in the literature. Certainly in the company where 
I work, if I use non-self-explanatory or even abbreviated names 
(e.g. A, W, E) my pull request won't be approved until I make 
them readable. I do the same consideration when reviewing other 
people's PRs.

As I said in my first reply, the DIP provides no rationale other 
than current synatx "can be tedious" without providing any use 
case.

It looks to me that the actual rationale of this change is (orher 
than dealing with badly named enums imported from C) to enable 
unreadable coding styles. And to mortgage the language and the 
compiler for it.


More information about the Digitalmars-d mailing list