←back to thread

201 points olvy0 | 1 comments | | HN request time: 0.204s | source
Show context
high_na_euv ◴[] No.41878416[source]
LINQ is so fucking useful and well designed feature of .NET ecosystem that it is unreal when you gotta use lang which doesnt have such a thing.

C# design team is/was unparalleled

replies(7): >>41878459 #>>41878543 #>>41878588 #>>41878686 #>>41879163 #>>41879194 #>>41879315 #
hggigg ◴[] No.41878686[source]
LINQ is a veritable footgun in any large team I find. While it's extremely powerful and really nice, it's so so so easy to blow your toes off if you don't know what you are doing. Some of my favourite screw ups I saw:

* Not understanding when something is evaluated.

* Not understanding the computational complexity of multiple chained operations/aggregates.

* Not understanding the expectation that Single() requires exactly one of something.

* Not understanding how damn hard it is to test LINQ stuff.

replies(5): >>41878737 #>>41878748 #>>41878838 #>>41879379 #>>41879440 #
1. SideburnsOfDoom ◴[] No.41879379[source]
> * Not understanding when something is evaluated.

Linq is lazy. .ToList() reifies. there, that's the gist of what you need to know. Not hard.

> Not understanding the expectation that Single() requires exactly one of something.

eh? There are a bunch of these methods, Single, SingleOrDefault, First, FirstOrDefault, Last, LastOrDefault and you can look up and grasp how they differ. It's fairly simple. I don't know what the problem is, outside of learning it.

> Not understanding how damn hard it is to test LINQ stuff.

Hard disagree. LInq chains can be unit tested, unless your Db access is mixed in, which is not a LINQ issue at all, it is a database query testing issue. LINQ code, in itself, is easily unit testable.