On Sunday, 29 April 2012 at 01:06:54 UTC, bearophile wrote:
* I hate C style struct initializers and would really like to
see them go, but
for reasons that I don't understand, people actually use them
rather than using a proper constructor call,
For single structs I prefer D-style initialization.
But take a look at this code, if you replace those C-style
initializers with D-style, even using aliases to shorten the
code to single letters, that data section becomes more noisy:
http://rosettacode.org/wiki/Ray-casting_algorithm#D
I have one source file called staticdata.d; Here immutable
global data is stored. It's literally pages and pages of data and
i only using static this() when building an AA.
//excerpt: /NP and VT aliases.
immutable SubRecordParts subParts[] = [
{"AADT", "", 16, [ //alchemy (apparatus)
NP(VT.ranged_32, "Apparatus"),
NP(VT.float_32, "Quality"),
NP(VT.float_32, "Weight"),
NP(VT.i_32, "uses")]},
{"AODT", "", 24, [ //armor
NP(VT.ranged_32, "Armor Body Type"),
NP(VT.float_32, "Weight"),
NP(VT.i_32, "Value"),
NP(VT.i_32, "Health"),
NP(VT.i_32, "Enchant Points"),
NP(VT.i_32, "Armour")]},
{"BKDT", "", 20, [ //book
NP(VT.float_32, "Weight"),
NP(VT.i_32, "Value"),
NP(VT.i_32, "isScroll"),
NP(VT.ranged_32, "Skill ID"),
NP(VT.i_32, "Enchantment points")]}];
Would you really force me to use fully named and qualified for
every element? More verbose but helps not at all.
immutable SubRecordParts subParts[] = [
SubRecordParts("AADT", "", 16, [ //alchemy (apparatus)
NotePart(ValueType.ranged_32, "Apparatus"),
NotePart(ValueType.float_32, "Quality"),
NotePart(ValueType.float_32, "Weight"),
NotePart(ValueType.i_32, "uses")]),
SubRecordParts("AODT", "", 24, [ //armor
NotePart(ValueType.ranged_32, "Armor Body Type"),
NotePart(ValueType.float_32, "Weight"),
NotePart(ValueType.i_32, "Value"),
NotePart(ValueType.i_32, "Health"),
NotePart(ValueType.i_32, "Enchant Points"),
NotePart(ValueType.i_32, "Armour")]),
SubRecordParts("BKDT", "", 20, [ //book
NotePart(ValueType.float_32, "Weight"),
NotePart(ValueType.i_32, "Value"),
NotePart(ValueType.i_32, "isScroll"),
NotePart(ValueType.ranged_32, "Skill ID"),
NotePart(ValueType.i_32, "Enchantment points")])
];