8 ms·
Named function parameters are nice, but you can accomplish something similar with only two more characters in some languages: DrawRect({at: origin, width
by anonytrary 7y ago
Named function parameters are nice, but you can accomplish something similar with only two more characters in some languages:
DrawRect({at: origin, width: 30, height: 40})
vs. DrawRect(at: origin, width: 30, height: 40)
I can understand why this is considered a nice-to-have. The verbosity didn't really change.
- wruza 7y agoTwo more characters and one more allocation per each LoC.
- a13n 7y agoMost of us are just writing crud apps anyway so one more allocation is extremely affordable
- lonelappde 7y agoMaybe but this highly dynamic programming style is why Macs have always been so much slower than Windows on equivalent hardware.
- Scapeghost 7y agoWhere did that come from? Apart from games that were obviously optimized for Windows first then ported to macOS, has that claim been measured? Because macOS has always certainly FELT faster than Windows.
- anonytrary 7y agoAs if my app stops working because of this?
- kalleboo 7y agoYou can accomplish it in other languages, but will all the other library authors do so? Do the OS libraries do so?
- thom 7y agoAnd then you have to check that the map you're being given has all the correct keys with the correct typed values. And when you're looking at the code, you see: function DrawRect(options) {... Unless you're immediately destructuring it or whatever. I don't think it's _that_ straightforward to compare the two, unless I'm thinking of the wrong languages here.
- Too 7y agoTypescript can specify required keys in a dictionary: function DrawRect(options: { at: Point2D, width: number, height:number}} It will be checked compile time that all keys are provided (unless dict comes from serialized json or something).
- thom 7y agoThat's more verbose than just having arguments though, right?
- Too 7y agoSlightly more verbose but not much. Just having arguments takes you back to square one where you might mix up the order of width and height since nothing is forcing the caller to use named parameters. Perhaps it would be better to have some linter enforcing such things.
- thom 7y agoIt doesn't take you back to square one in languages which enforce named parameters, which I thought we were talking about.
- masklinn 7y ago> I can understand why this is considered a nice-to-have. Well typing is one good reason, maps usually are not statically typed with key:value pairs. That's more of a class / struct thing. And then the verbosity increases quite a bit.