![](/static/253f0d9b/assets/icons/icon-96x96.png)
![](https://programming.dev/pictrs/image/8140dda6-9512-4297-ac17-d303638c90a6.png)
I largely agree with this nodding along to many of the pitfalls presented. Except numbers 2s good refactor. I hope I won’t sound too harsh/picky for an example that perhaps skipped renaming for clarity on the other parts, but I wanted to mention it.
While I don’t use javascript and may be missing some of the norms and context of the lanugage, creating lamda functions (i don’t know the js term) and then hardcoding them into a function is barely an improvement. It’s fine because they work well with map
and filter
, but it didn’t address the vague naming. Renaming is refactoring too!
isAdult
is a simple function with a clear name, but formatUser
and processUsers
are surprisingly vague. formatUser
gives only adult FormattedUser
s, and that should probably be highlighted in the name of formatUser
now that it is a resuable function. To me, it seems ripe for mistaken use given that it is the filter that at a glance handles removing non-adult users before the formatting, while formatUser
doesn’t appear to exepct only adult users from it’s naming or even use! Ideally, formatUser
should have checked the age on it’s own and set isAdult true/false accordingly, instead of assuming it will be used only on adult User
s.
Likewise, the main function is called processUsers
but could easily have been something more descriptive like GetAdultFormattedUsers
or something similar depending on naming standards in js and the context it is used in. It may make more sense in the actual context, but in the example a FormattedUser
doesn’t have to be an adult, so a function processing users should clarify that it only actually creates adult formatted users since there is a case where a FormattedUser
is not an adult.
If Reddit back in the day had asked a few dollars for me to stick with using 3rd party apps using the API I would have. But they did the opposite, so here I am. First time actually donating to something, a measily $2 dollars a month, but hopefully a start to fund some of the free stuff I use.