Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What flaws in the language does Resharper overcome? Does a language exist that causes you to never need to refactor code?


Have you ever used ReSharper? It is far more than just a refactoring tool. It is basically a set of extensions for Visual Studio that somewhat entirely transforms the VS experience. It could be described as pseudo-productivity tool for Visual Studio more than merely a refactoring tool.

With that said, refactorings in C# code (like Java) are quite often incredibly repetitive which is why ReSharper exists: to ease that pain. Quite often it is alternating a property to a field, and vice versa. Or auto-implementing a new constructor parameter with a null checker, field or property setter, readonly detection etc. It's just boring repetitive rubbish that the language has delegated onto the programmer rather than simply improve the syntax. There is a common expression about C# (admittedly, often perpetuated by those whom have moved on from C#) which is "In C#, you have to do everything three times."

ReSharper has a type of code linting built into it which can be rolled out to the whole project team. This is cool and all. But it would have been better if the language ecosystem itself agreed upon a stylistic standard and provided a code linter for it. Then allowed that to be added in as a build step. C# shops are possibly too lazy for that though. It's all about the IDE baby!

And that ultimately is the USP of ReSharper. A product for lazy developers. It's no wonder they charge quite handsomely for it.


My main use cases for ReSharper are:

1) Auto-formatting 2) Integrated Unit Test runner - not great, but still better than the built-in VS one 3) Go to Implementation - takes you to straight to the actual class implementation(s) of the interface member you clicked on 4) Auto-disassembly when you hit "Go To Declaration" on a referenced DLL

Only automated refactoring I use is the built-in VS stuff for renaming identifiers. I have no idea why you'd alternate between fields and properties - most people just use properties unless it's a private member. Auto-implementing a constructor is A) something VS can already do out-of-the-box (snippets) and B) not really necessary a lot of the time since there's object initializers now. And I have no idea what you mean about "readonly detection" since 'readonly' is a first-class keyword.

> It's just boring repetitive rubbish that the language has delegated onto the programmer rather than simply improve the syntax.

You realize it's a living language, right? There was admittedly a lot of boilerplate in older versions due to strong Java influence. But C# has had type inference (i.e. 'var' keyword), anonymous types, lambdas, auto-implemented properties, and extension methods since C# 3 was released in 2007. C# 4 (2010) added co- and contravariance for generics, late binding, and optional & named parameters. In 2012 they added async/await with C# 5.

And now C# 6 has static type import, lambda-bodied methods, inline null-check operator, first-class string interpolation, and a bunch of property enhancements that remove even more boilerplate.

I'm dying to know what else you would add to the language.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: