News for hackers. Stuff that matters.
Re:An Overwhelmingly Negative and Demoralizing Force by n4r9 on Wednesday April 09, 2025 @05:44AM (#43630446)
Are you telling me you've never seen code like this:

  var ageLookup = new Dictionary<AgeRange, List<Member>>();
  foreach (var member in members) {
    var ageRange = member.AgeRange;
    if (ageLookup.ContainsKey(ageRange)) {
      ageLookup[ageRange].Add(member);
    } else {
      ageLookup[ageRange] = new List<Member>();
      ageLookup[ageRange].Add(member);
    }
  }
which could instead be:

  var ageLookup = members.ToLookup(m => m.AgeRange, m => m);
Re:An Overwhelmingly Negative and Demoralizing Force by davidgay on Wednesday April 09, 2025 @11:32PM (#43640358)
I'm of the opinion that

  var ageLookup = new Dictionary<AgeRange, List<Member>>();
  foreach (var member in members) {
    ageLookup.getOrCreate(member.AgeRange, List::new).add(member);
  }
is more readable in the long-term... (less predefined methods/concepts to learn).
Re:An Overwhelmingly Negative and Demoralizing Force by n4r9 on Thursday April 10, 2025 @03:28AM (#43641551)
Where is `getOrCreate` defined? Is it a custom extension method? There's also a chance we're thinking in different languages. I was writing C#, yours looks a bit more like C++ maybe?

Readability incorporates familiarity but also conciseness. I suppose it depends what else is going on in the codebase. I have a database access class in one of my solutions where `ToLookup` is used 15 times; yes you have to learn the concept, but it's an inbuilt method and it's a massive benefit once you grok it.