|
|
|
|
|
by mypetocean
1049 days ago
|
|
I've become a big fan of using something like a `main()` function to act as the one conventional place where pure functions are piped together at the top of a module. You get this very nice linear execution birds' eye view which tends to be readable. Combine that with hoisting and you start with this big picture at the top of a file, and then can dig deeper into the smaller functions as needed, written in lexical order lower in the file. Here is a very trivial JS example from a kata: ```js
function main (numbers) {
return Array
.from(numbers)
.sort(byGreatest)
.slice(0, 2)
.reduce(toSum)
}
``` This is much more regularly written in languages with a pipeline operator, like Elixir, because you can pipe to arbitrary functions and operators (instead of being restricted to a method chain). (JS/TS will get there eventually, if the TC39 committee can ever finally commit to the proposal.) |
|