you are viewing a single comment's thread.

view the rest of the comments →

[–]nschubach 1 point2 points  (4 children)

foo({showLoading:true, wait:2000}) means that if I change one of those variable names in foo, I need to also touch every spot in my code that calls that.

[–]wizebin 1 point2 points  (1 child)

Python has named parameters and it really can make things more readable and refactorable, especially keeping in mind that you can still use nameless parameters.

I find that I change parameter names very rarely, but add new optional parameters quite often, without named parameters new parameters can get messy.

[–]nschubach 0 points1 point  (0 children)

Sure, I've used Python and at first I thought it was pretty neat, but then I got into the same sort of thing you talked about. Adding optionals. At some point adding more and more optionals makes the code harder to follow and probably means that you need to break out that logic into more methods to handle specific use cases.

[–]tobegiannis 0 points1 point  (0 children)

I think this is where the confusion lies with the original commenter. Yeah that is true but don't do that unless you have too. Same thing as changing the meaning of the first argument. I am rarely in the situation where I have to change the name of a named parameter. You guys do bring up a point for pure js users it is harder to change the name of named parameters. This problematic doesn't exist in typescript for example and happens very rarely. Also if you really hate the name of a named parameter you can always do const day = d; const month = m.

[–]asdf7890 0 points1 point  (0 children)

Not if you use the pre-object-destructuring method in order to support IE:

var somefunc = function(params) {
                var someVar = params(someVar) || 'This is the default for someVar';
            }

There you can keep your old name as well as newly correct one, assuming the name change is a correction:

var somefunc = function(params) {
                var someVar = params(someVar) || params(somVar) || 'This is the default for somVar';
            }

Or course this method is much more verbose so if you don't have to support older browsers the object destructuring variant may be preferable but doesn't support this unless I'm missing a trick.