I love R# because it reduce mouse usage

I have this piece of code

 

image

 

And doc2 is checked because it could be null, so I can ALT+RET and choose the right action, as example check if doc2 is null

image

And I got this

image

With a couple of click on the keyboard, if you to not like all of the code to be indented inside the if you can press ALT+RETURN on the declaration of the doc2 variable

image

Resharper add an if and the caret is positioned on the default action, that is throw NotImplementedException, so you can just type return; and the game is done

image

Such operations are so common when you write code, that the ability to issue such check without leaving your finger from the keyboard is invaluable.

alk.

How could I work without resharper

In a system that use heavily IoC principle, it is common during component modification, to discover that to add a new functionality that component need to add a dependency on some interface. Here is the constructor of a component

   1: public MainNavigator(

   2:     IEBrochureService brochureService, 

   3:     IBroker broker)

   4: {

Now I need to add dependency from the IWpfSystem interface, so I simply add another parameter to the constructor, and R# suggests me a lot of action that could be triggered from this modification

image

The first one automatically declare a field called _engine and initialize into the constructor, but I have a lot of other options, like applying change signature refactoring, and change all call to this constructor, creating an overload version without this new parameter or even check for null assignment.

Shortcut like these one can tremendously boost up your productivity.

alk.

Resharper live template are the solution to many problems

Surely when you write code you write a lot of similar snippets, as an example, defining properties in objects that should implements INotifyPropertyChanged is usually highly repetitive, I write my properties like this one.

   1: [DataMember]

   2: public Int32 Rank

   3: {

   4:     get { return _rank; }

   5:     set { this.Set(p => p.Rank, value, ref _rank); }

   6: }

   7: private Int32 _rank;

DataMember is needed for WCF, and the setter part is based on some base class and some helpers that raise INotifyPropertyChanged etc etc etc. Writing many of these is really tedious, so it is time to write a VS Snippet or still better, a Resharper Live Template.

The main difference is that R# has the concept of macro, writing such a snippet requires that the name of the field is the same of the property, but with first character lowercase and prefixed with a  _.

Here is the template in R#.

image

Figure 1: Live template in action

Now You can simply assign a shortcut to this template and defining new properties is really a breeze.

Alk.

Temporary disable Resharper 5

R# is really useful, but sometimes, when I’m working to very big web forms or winform projects, and I know that I do not need R# feature because I’m only designing the UI, it can be useful to temporary suspend R#, freeing memory and speeding a little bit VS.

In R#5 the option to disable it is in the Tools->Options menu

image

Where you can easily stop and resume R# functionality. But the coolest feature is that you can simply disable and reenable R# with command Windows

image

You also have intellisense :), so you can enable/disable in seconds :)

alk.