re: Refactoring the Worst Code I’ve Ever Written VIEW POST

FULL DISCUSSION
 
Sloan, the sloth mascot Comment marked as low quality/non-constructive by the community View code of conduct

Refactoring the Worst Code I’ve Ever Written, Part 2

// Group data according to type and year
const dataset = data.reduce((acc, curr) => {
    acc[curr.type] = acc[curr.type] || {}
    acc[curr.type][curr.year] = acc[curr.type][curr.year] || []
    acc[curr.type][curr.year].push(curr)
    return acc
}, {})
 

Maybe I'm missing the point of your comment, but if you have recommendations for how to refactor that snippet, I'd honestly love to hear them! I did consider creating a dataset object first with the type & years predefined (like I created in Option 1) and setting that to the initial accumulator value, but this seemed cleaner to me. Would love to know if you had other thoughts!

 

Hello, didn't read the whole legacy code.
But this block of code took my attention, in concrete: useless write and duplicated reads.

I see better construction of it is:

const dataSet = data.reduce((acc, cur) => {
  const { type, year } = cur;

  if (acc[type] == null) acc[type] = {};
  if (acc[type][year] == null) acc[type][year] = [];

  acc[type][year].push(cur);
  return acc;
}, {});

Thanks for sharing! Just goes to show that there's a lot of different ways to solve the same problem.

@Jacque, it's way of not doing useless writing each time, but only in case when it needs.

Yep, I read it and can see what it does, thanks.

Yeah, Dmytro it's terser. It's really not among the more interesting comments you could make though given the optimisations actually available above.

Maybe consider when commenting on the internet about how crap someone's code is that yours is still very ...naive.

sauln, if take your comment seriously, not easy without smile, but anyway,
about "naive" – what do you mean from technical point of view?
Propose your variant, and highlight weak(or naive) sides of my example,
if you will be right with your proposition – I will agree with better solution with real advantages.

code of conduct - report abuse