this post was submitted on 21 Mar 2024
295 points (94.8% liked)
Programmer Humor
19594 readers
612 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Hm I'm having trouble visualizing this do you know a quick little example to illustrate this?
Rather than me coming up with an elaborate and contrived example, I suggest giving a language like Elixir a try. It tends to force you into thinking in terms of immutability. Bit of a learning curve if you're not used to it, but it just takes practice.
Ok how about this then, I frequently do something like this:
How would this be made better with a functional approach? And would be more legible, better in anyway?
I'd say this example doesn't fully show off what immutable data can do--it tends to help as things scale up to much larger code--but here's how I might do it in JS.
Results:
Notice that JavaScript has a bit of the immutability idea built in here. The
Array.flat()
returns a new array with flattened elements. That means we can chain the call toArray.join( " " )
. Theclasses
array is never modified, and we could keep using it as it was. Unfortunately, JavaScript doesn't always do that;push()
andpop()
modify the array in place.This particular example would show off its power a little more if there wasn't that initial
btn
class always there. Then you would end up with a leading space in your example, but handling it as an array this way avoids the problem.Very interesting. Actually the part you mention about there being an initial
'btn'
class is a good point. Using arrays and joining would be nice for that. I wish more people would chime in. Because between our two examples, I think mine is more readable. But yours would probably scale better. I also wonder about the performance implications of creating arrays. But that might be negligible.