On 3/14/2014 10:21 PM, Regan Heath wrote:
On Fri, 14 Mar 2014 10:22:40 -0000, 1100110 <0b1100...@gmail.com> wrote:
On 3/14/14, 4:58, Regan Heath wrote:
Maintenance is very slightly better too, IMO, because you
add/remove/alter a complete line rather than editing a set of || && etc
which can in some cases be a little confusing. Basically, the chance of
an error is very slightly lower.
For example, either this:
version(X86) version = MeaningfulVersion
version(X86_64) version = MeaningfulVersion
version(PPC) version = MeaningfulVersion
version(PPC64) version = MeaningfulVersion
version(ARM) version = MeaningfulVersion
version(AArch64) version = MeaningfulVersion
version(MeaningfulVersion)
{
}
else version (MIPS32)
{
}
or this:
version (X86) version = MeaningfulVersion
version (X86_64) version = MeaningfulVersion
version (PPC) version = MeaningfulVersion
version (PPC64) version = MeaningfulVersion
version (ARM) version = MeaningfulVersion
version (AArch64) version = MeaningfulVersion
version (MIPS32) version = OtherMeaningfulVersion
version (MeaningfulVersion)
{
}
else version (OtherMeaningfulVersion)
{
}
Regan
...I can't even begin to describe how much more readable the OR'd
version is.
It's shorter, but shorter does not mean more "readable".. if by readable
you mean include the ability to communicate intent etc. Add to that,
that readable is just one metric.
Walter's point is that the above pattern is better at communicating
intent, clarifying your logic, and making the resulting version
statements easier to understand (aka "more readable")
R
For me, the issue is that this has to go in *every* module that needs
MeaningfulVersion and OtherMeaningfulVersion to be defined. That's a lot
more points to track than a single line of ORed versions in each module.
When I do need something like this, I just define some manifest
constants in a config module, import that everywhere, and use static if.
But that feels very much like the workaround it is. I would much prefer
to have boolean versions. The bottom line is that I'm doing exactly what
Walter apparently doesn't want me to do anyway, just with the added
annoyance of importing an extra module to get it done.