On 25 August 2024 21:29:45 BST, John Bafford <jbaff...@zort.net> wrote:
>This is only by current convention. It used to be that parameter names were 
>not part of the API contract, but now with named parameters, they are. 

Indeed, and it remains highly controversial among library authors, and is even 
used as a justification for this RFC.


> There's no reason default values couldn't (or shouldn't) become part of the 
> API contract in the same way.

I agree that they *could*, but I am making the case that they *should not*. The 
ability to specify an optional parameter which is subject to change is a very 
useful one, frequently used. If a library author *wants* to expose the default 
value for manipulation by users, they can make it available as a constant, as 
with e.g. PASSWORD_DEFAULT.

I can definitely see the use in features that enhance the existing use of 
default parameters to mean "I trust the implementation to do the right thing, 
and am not interested in specifying this parameter". (And see my earlier post 
on how bit flags can still fit it into this meaning.)

None of the examples so far have persuaded me that there is sufficient value in 
extending that to "every optional parameter also acts a public constant that 
the caller can read out and act on at will".


Rowan Tommins
[IMSoP]

Reply via email to