Shut up and take my money!

Yes… The Jetbrains guys has made me to buy a license for Rider IDE and here is why.

Well, I am a Visual Studio since its 2003 version (.net 1.0 and 1.1), and I’m very comfy when I use it.

It’s a 14 years friendship! But… sometimes we must to try something new, and I tried Rider on its first version (click here) and I abandoned it because it doesn’t worked with .net Core 2.0.

So, the version 2017.2 comes to light and everything changed!

Maybe you are asking yourself: “why .net Core 2.0 is so important?” and my answer is: Is 2017 and you need performance!

The .net Core 2.0 outperforms the Node.js, period.

You can find more information on these links (or in a google search “.net core 2.0 vs node js”):

IMHO, in a long term development, as it’s a strongly typed language, the C# is less prone to errors than Javascript.

This is why .net Core 2.0 is important to me!

Back to Rider!

A weeks ago I recieved this email:

Screenshot_20171024-111110

Yessss! At the “what’s-new 1st line” I could read: “.NET Core 2.0” and I gave Rider a try.

RAM consumption: VS 1 x 0 Rider

ram

Yes, Rider uses 2 times more RAM than Visual Studio. Why? Inspections, a lot of them!

Code Speed: VS 1 x 1 Rider

Scenario: create a Web.API using .Net Core 2.0 and a NUnit test project.

Creating Web.API

Visual Studio needs two steps, Rider only one and is faster to create the project and restore the dependencies. This is the 1st reason of the higher RAM consumption.

Visual Studio Step 1
vs_step_1

Visual Studio Step 2
(there is a design inconsistency here? The previous step has a Dark Theme…)

vs_step_2

Rider single step
rider_single_step

The results are the same (rider on the left)
created_api

Creating the nUnit Project

Both of them are a single step creation! Right-click on the solution, Add…

Visual Studio
Attention: starting a new test project in a old fashion way will cause an error! This project isn’t a .Net Core Project!
vsTest

If your project in Visual Studio look like this…
vs_problem

vs_problem2

If you insist, you’ll get an error when you try to build the application!
the_error

Delete it and start the correct way!
the_correct_way

Its look like the .Net Core is not “native”… Weird… After all, in the .Net Standard, you don’t need to select the .Net Standard to create a test project!

Rider
riderTest

None of them gave me a NUnit test option. How they act when I started to write a nUnit Test? Let’s see…

I changed the decorator in both classes and Visual Studio suggested to download the NUnit package from NuGet and use it, Rider got lost.

Visual Studio
visual_studio_suggestion

Rider
rider_suggestion

So… I needed to install the NUnit package by myself…

Step 1
rider_nunit_install

Step 2 – after the package installation, Rider now suggests to use the NUnit reference.
rider_suggestion_2

I have written a simple method that compares two strings and return true if they are equals, and, when you try to run the test…

On Visual Studio, it runs the test looking for a xUnit test and don’t found a valid test…
running_vs

On Rider, it the test is disabled and, when you open the Unit Test Explorer, the Rider suggests NUnit3TestAdapter!
running_rider

After install the TestAdapter, the test runs smoothly on both IDEs!

Visual Studio
running_vs_success

Rider
running_rider_success

Conclusion on Code Speed

Rider is more consistent on interface and on inspections. You do not have doubt when you choose the correct project to start and, even if the project is originally to xUnit project, it understands that you are writing to NUnit test and it disable the test if something is wrong, and, in the case where we forced the error by do not install all necessary packages, Rider suggested the missing package.

Visual Studio leads you to an error by bad interface choice, by hiding the .Net Core test project in a .Net Core menu, when it doesn’t do the same for the .Net Standard.

Test capabilitties: VS 1 x 2 Rider

At the moment, I have access to Visual Studio Enterprise because the company from I work provides me a MSDN Account with a Visual Studio Enterprise License for my personal use, but… If I had to pay, I won’t pay 2.999 USD/year!

My “brazilian developer income” doesn’t allows me to do this.

But… It allows me to pay 17.90 USD monthly for the Resharper Ultimate + Rider Pack! I don’t use Resharper in my Visual Studio installation because the RAM consumption goes high and my personal laptop has only 8GB.

Said that, I don’t compare the Live Unit Testing from Visual Studio Enterprise with the Rider capabilities.

The test runs faster on Rider.

Code Inspections: VS 1 x 3 Rider

Visual Studio suggests using arrow function and Rider suggests made the method static.

Visual Studio Code Inspection does not show anything
vs_inspection

Alt + Enter on method the refactoring options is shown
vs_code_inspection

 

Rider Code Inspection, when it have a suggestion it shows four green dots
rider_inspection

Hover the mouse over the four green dots shows the suggestion.
rider_inspection2

Alt + Enter on method shows the suggestion AND the expression body too (plus other refactoring options)!
rider_inspection3

While an “arrow function” doesn’t affects the performance, made a method static does!

The arrow function reduces lines of codes and makes the view of the expressions clearer, more readable.

A simple search on google “why use a static method instead a non-static method” returns this:

From the FxCop documentation:

“Members that do not access instance data or call instance methods can be marked as static (Shared in Visual Basic). After you mark the methods as static, the compiler will emit non-virtual call sites to these members. Emitting non-virtual call sites will prevent a check at runtime for each call that ensures that the current object pointer is non-null. This can result in a measurable performance gain for performance-sensitive code. In some cases, the failure to access the current object instance represents a correctness issue.”

The proof: making the method static made the test runs 6,25% faster in this simple method! Think about an entire application, it can be a huge gain if you consider all the hints!

Non static method (32ms)
non_static

Static method (30ms)
static

Overall conclusion

Visual studio can “act as the Rider” if you install the Resharper complement, but, the installation makes it very slow for me, that I have a 8GB laptop.

I go Rider!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s