3 ms·
C# mostly suffers from having way too many options to do something. The quality of the average codebase written in 10 layer-abstraction-heavy OOP style that doe
by neonsunset 3y ago
C# mostly suffers from having way too many options to do something. The quality of the average codebase written in 10 layer-abstraction-heavy OOP style that does not leverage the language features for writing concise and understandable code does not help either.
This is one of the reasons people rave about F# - it's less about the language and more about not suffering from really bad tradition that has settled over the years.
Don't get me wrong, the situation improves significantly each year, but the developers who require extensive explanatory work to get any semblance of buy-in to stop doing things the painful and cargo-cult-y way are still in the majority.
Otherwise, I think C# is very approachable thanks to it being extremely forgiving language* in general and standard library offering easy-with-pretty-good-defaults shortcut options to do the basics like networking, file io, hashing, creating simple web servers and UI applications, etc. Its both CLI and IDE tooling is also top notch today.
* Forgiving as in, mistakes usually tend to decrease otherwise excellent (better than Go) performance rather than cause critical failures.
- zimpenfish 3y ago> The quality of the average codebase written in 10 layer-abstraction-heavy OOP style They did not learn from Perl, it seems.
- xorcist 3y agoWhy do you think Perl is abstraction-heavy?
- zimpenfish 3y agoPerl, itself, isn't but if you let lunatics loose on it for 10 years without adult supervision, you'll end up with people writing their own ORMs, their own object models, etc. and you have a fragile tower of abstractions that you can't even look at for fear of it imploding.
- xorcist 3y agoAs opposed to Java, C++, ..?
- tester756 3y ago>The quality of the average codebase written in 10 layer-abstraction-heavy This meme needs to die. I've seen "10 layer abstraction heavy" code base only once The code was simulating hardware/firmware behaviour when the real impl. was not available, and when the real impl. was delivered, then it was called instead. So that was quite reasonable why they went with this like that. Normal apps are mostly MVC-like where controller receives HTTP request (like 5 LoC?), moves it to some handler which performs business logic / calls db and the returned stuff is either HTML or JSON. That's your average web app.
- philosopher1234 3y agoThe ten layer abstraction continues to exist in Java land. I see it every day at work.
- trallnag 3y agoYou get a few layers for free by using Spring alone
- 38 3y ago> This meme needs to die. I've seen "10 layer abstraction heavy" code base only once I dont think so. I like Go code because its usually pretty "flat" unless you find someone from a Java or C# background. C# code is similar to Java in that nearly everyone writes it with an IDE, so you end up with nested folders like 8 levels deep. it makes reading the code stupidly hard, unless you download and load into an IDE or something like GitHub with essentially a web IDE. so anyone used to just a normal editor like Vim or similar is basically out of luck.
- tester756 3y agoWhile I agree that almost everyone uses IDEs when doing C# then I'm not sure about this folder thing. I've been shocked many times when seeing Java repos that they have like 5 empty folders nested just to have 3 java files. I don't see that in C# world. >it makes reading the code stupidly hard, unless you download and load into an IDE or something like GitHub with essentially a web IDE. so anyone used to just a normal editor like Vim or similar is basically out of luck. What does "normal editor" even mean? Shouldn't "normal" be dictated by market share? so VS Code, Notepad++ according to SO Survey 22