DIP 1020--Named Parameters--Community Review Round 2

rikki cattermole rikki at cattermole.co.nz
Wed Sep 11 05:37:57 UTC 2019

On 11/09/2019 9:10 AM, Walter Bright wrote:
> On 9/10/2019 2:06 AM, Mike Parker wrote:
>> This is the feedback thread for the second round of Community Review 
>> for DIP 1020, "Named Parameters":
>> https://github.com/dlang/DIPs/blob/c723d8f4e3ac2d5bcaf8cdff87e1507f09669ca6/DIPs/DIP1020.md 
> My review is the same as in the first round:
> https://digitalmars.com/d/archives/digitalmars/D/DIP_1020--Named_Parameters--Community_Review_Round_1_325299.html#N325627 
> To which Rikki responded with:
> "That solves function arguments, what is your proposal for templates?"
> https://digitalmars.com/d/archives/digitalmars/D/DIP_1020--Named_Parameters--Community_Review_Round_1_325299.html#N325631 

I stand by my question.
In your proposal there was no mention of template support.

You have since said what your strategy is for templates.


However I disagree with your rationale.

"Although this supports reordering, the real reason for naming is so one 
can have a function with a longish list of parameters, each with a 
reasonable default, and the user need only supply the arguments that 
matter for his use case. This is much more flexible than the current 
method of putting all the defaults at the end of the parameter list, and 
defaulting one means all the rest get defaulted."

This is a known code smell with a known solution: refactoring.

I will posit that if you have code that has long parameters lists often, 
either you have a lot of technical debt or you are writing code that 
lends itself to introducing technical debt often.

For me at least, when I have long parameter lists, they typically 
involve math and are called in about one or two places at most and quite 
importantly all done within the same module. I do not believe that this 
warrants a language feature in of itself but I can be convinced that 
there are problems that lend itself to long parameter lists that are 
often solved.

Manu has a very interesting story related to this. Involving rewriting a 
code base for the purposes of refactoring of the data abstractions and 
ending up with faster code on platforms that it was expected to be much 
slower on.

More information about the Digitalmars-d mailing list