💾 Archived View for bbs.geminispace.org › u › dimkr › 4720 captured on 2024-08-18 at 20:38:26. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-07-09)

🚧 View Differences

-=-=-=-=-=-=-

Comment by 😈 dimkr

Re: "Any C# fans in the crowd? I have a large legacy C# codebase..."

In: s/programming

I use Code (with the C# extension of course) and the dotnet CLI to do the things one normally uses VS for (things like scaffolding of new projects), and the LSP crashes very often and struggles with big projects. Regarding elegance - maybe I can see the elegance you see, but I also find it hard to finish a big refactoring project without leaving any traces of the old code. For example, I don't have a linter for things like x.AddRange(IQueryable) from async code. In general find the type system a bit meh, because I miss Go interfaces and it's static typing but with null and potential gotchas at runtime: more "static" than Python+annotations or TypeScript but less "static" than Go.

😈 dimkr [OP]

2023-08-25 · 1 year ago

1 Later Comment

🌙 dmoonfire · 2023-08-25 at 12:07:

I'll agree there. The second C# supported nullables, I turned that on but its going to take years for all supporting libraries before it is universal (I hope). With old projects, you can only do that one file at a time.

I like to think newer languages learn from previous ones and NULL will continue to be pushed down.

Refactoring legacy code bases is a pain, more so when the previous team didn't have discipline or a good architecture. That is one reason I'm strict with code reviews.

I inherited a 600 kLOC project (C#, 1.1 MLOC total including SQL Server) twelve years ago and I'm still refactoring out "just make it work" code. It's a painful journey, no matter what language.

If you can, I would strong suggest you try out Rider though. Once you get over the learning curve, it has superior refactoring, analysis, and navigation tools.

Original Post

🌒 s/programming

Any C# fans in the crowd? I have a large legacy C# codebase at work, and I don't like this language. I feel like this language makes it easy to shoot yourself in the foot, or write code that performs badly and doesn't scale (especially EF+LINQ). And, I find it hard to refactor C# code because of hidden control flow, colored functions (async/not/static/dynamic), 'hidden code' like getters and frequent disruptive changes (across runtime/EF versions). However, some people love it to death and I'd...

💬 dimkr · 8 comments · 2 likes · 2023-08-23 · 1 year ago