First Impressions + 3 weeks in.

Hi, figured it might be useful to share my experience of switching from VS2017 to Rider (for Unity mainly but everything really).

I installed it initially just for the auto [FormerlySerializedAs] when refactoring, but it seemed pretty familliar and since it offeres VS style shortcuts, I thought I'd give it a whirl for a few weeks.

On the whole, it's got a lot to love but I'm finding it heavy-handed and buggy to the detriment of productivity, and just absurdly hard to track down and disable individual features. (E.g. ALL typing assistance).

That offsets any benefit I'd recieve from paying for resharper + convenient refactoring.

VS vs Rider

Features: Tied

Rider has many nice things:
-Auto-adding [FormerlySerializedAs] (the reason I installed)
-The little "connected to unity" icon
-Refactoring like params in method groups
-Auto-reconnecting the debugger
-Scanning unity assets
-Suggestions to neaten code
-Find action by shortcut <3
-Disabling windows defender
-Live find in files
-Hover previews
-hitting F12 on an enum member and getting a handy list of usages
-inverting flow to reduce nesting
-detecting an always-true scenarios
-"not used in any execution path" due to malformed loop
-"* to expression bodied"


But I've found myself just spending endless time turning features off, and getting frustrated at not knowing where to find them, or having to re-open the settings...every time. Worst though is discovering some things *can't* be turned off...


Such as:
"Unindent on backspace" which is a massive interruption as it activates while you're still arranging things (so you have to delete 4x spaces as the tabs insertion is broken).
I wish it would stop telling me it can't find Git. Why's there no off button - sometimes I would like it off till I'm ready.
"Auto-insert closing brace" being off but still turning Header( into Header(() Needs an off button!
-The above ignoring formatting rules when it does.
"Auto-insert closing brace" being off, but still wrapping ( multiple + expressions ) without asking.
"IndexOf() is culture-specific" warning in the context of blah.ToLowerInvariant().IndexOf()
It keeps inserting semicolons when that's disabled.
Just please stop inserting things!

So I'd call this equal because while VS has fewer or inferior features, they work and aren't getting in the way.
Reshaper for VS was a similar experience IIRC - I just wanted the heap allocation viewer and it transformed my entire IDE.

 

Debugging: VS

It's a lot clearer in VS, and I'm not running into "no module found with MVID...." errors all the time. I did upgrade the proj to .NET 4.x, Unity 2018.4.6, Rider 2019.2 to try and fix this, it seemed to help a little. Not enough to deal with the 3.5->4.0 dictionary serialization issues for existing users and the quadrupled build/play times though. Bit of a letdown.

Lots of weird quirks too, like the breakpoints window not being dockable (seen it elsewhere, but it's an odd choice) or not being able to place a breakpoint on a function decl if the opening { is on the next line... but it doesn't sync properly and the breakpoint may be somewhere other than where it purports and still active.

Another one might be how to edit a value while debugging. You have to go into the docked menu and right click the item, etc... vs just double clicking it in the onhover popup, or in the docked menu. Bit of a faff.

The worst thing I think though is it doesn't even flash Rider in the windows task bar when the debugger's trapped something; it just unceremoniously sits there in the background waiting for a click, looking for all intents and purposes like the debuggee has crashed. (especially as rider debugger reconnects).

I'm finding there's more visual feedback for stuff I'm not looking for than stuff I am, it's kinda all over the place in that regard.


General Speed: VS

Sometimes in rider I can be 8-10 chars into a variable before I'm shown suggestions. At which point I'm sure something's wrong, so I delete and start over. Kills the flow bigtime.
Other times it's fine.

Sometimes even just hitting Tab is visibly laggy - enough that I'm looking around to be sure the right window's focused (Quad core i7 on an SSD, it's not the hardware).

It does take a while to start up too (on a pretty minimal install), not so bad, but that would likely not be noticable if I wasn't trawling through the settings like a lost puppy a few times a day.

I think worst of all though is being forced to use the 4.x scripting runtime in Unity for prototyping, which is many times slower.

 

Navigation / UI: Tied

Seems to be full of odd coices like the "Most Recent" dialog not typing directly into a text box, so you can't ctr+shift+home when you make a mistake...
(That and it's bound to Ctr+, so I thought it *was* the find by type dialog for a while).

And infuriating choices like the Shift+F12 (find a thing) not always expanding the results.
E.g. I've deliberately elected to look for something... so it doesn't make a ton of sense to offer partial results. Still not sure what causes it to randomly re-collapse things after a few hours either.

The tree view is amazing, and having the contents expand in the main window on hover... genius!... but what's the point if I have to sit there expanding things.
It's just horrible to use in practice.

There's so much great thinking in this product though, like the live view of Find in Files, or being able to scan unity text assets <3

But for every one there are little nuissances like the "Generating list of processes" showing in the status bar every 2 seconds (literally).
Things are supposed to flash to grab your attention, this is effectively flashing and again I can't find a way to get rid of it.

Other things like "smooth scrolling" would be a good idea, if it was actually smooth. Instead it scrolls by one complete line at a time (vs per pixel / subpixel), meaning that as the animation slows down, you're looking at 0.25sec or so second jumps per line... which is long enough for your eye to focus, only to be drawn away... and again. If it was done properly it would work.


Lots of other little things getting in the way like hover popups showing up on random parts of the page with their arrows in random directions. E.g. I can see the variable it's referring to, it's at the top of the screen, but the layout/position cache says the variable is way down at the bottom right and so that's where the little baloon tip appears.

 

General Pros:

A familliar interface and hotkeys with shiny new features!
It's great having competing IDEs.

General Annoyances & Bugs:

Just let me type. Please just let me type. At most, maybe do indents for me. Nothing more. Even then they don't work properly.
Stop inserting () when I'm typing Header( leaving me with Header(()
Cannot run git!
Single characters can be off the edge of the screen and hitting 'end' won't take you far enough to see them (e.g. semicolons).
Kinda slow all over, sometimes even just moving lines up and down.
MVID errors + Debugging issues
Breakpoints out of sync
Cannot run git!
Warnings and nags where it's not an issue
OnHover tooltips can appear all over the place, far from the mouse or the item on screen with their arrows randomly pointing up, down, etc.
Sometimes stuff like Shift+F12 results appear with all nodes collapsed.
Updating process list!
Refactoring dialogue slow; I often miss the first character in the dialogue and I can be 3-4 chars into the next refactor before realising I'm just typing over things and the hotkeys aren't re-enabled yet.
The refactoring dialogue could use a button with a different hotkey for "add [FormerlySerializedAs]" vs the "don't add [FormerlySerializedAs]" so it's less painful switching back and forth without using the mouse or tabbing through the window components. Currently it's quicker to just add it and delete after. (Also, cannot run git)
Cannot run git.
Can't manually launch a second copy of rider either via task bar or the rider64.exe ... has to be from Unity.
Tabs are set to "tabs" but it's inserting spaces anyway.


Honestly, sorry if I'm coming across so negative, but now I resent having to switch to this IDE just to quickly use [FormerlySerializedAs].

I lose more time fighting with it than I've gained in productivity, so it's a hard pass for the time being.
When I can turn the following off ( for real though ), I'll be first in line for a shiny new license.

-fix debugging 3.5 scripting - it's still useful to debug old projects
-disable auto-insertion of () around variables
-disable auto-insertion of () in attributes
-disable auto-insertion of ; on returns
-make tabs behave like tabs (vs spaces) actually insert tabs (not spaces, and yes I have those options selected).


E.g. type literally only what I type, or literally what I have selected in the autocomplete, and nothing else; otherwise it's trying to do far too much with too little context or understanding of the situation and making more work for me.

Hopefully I'm allowed another evaluation in a year or two, when the product has matured a bit.
Cheers.

Note:
Thread where I'm asking about the auto-insertion with settings screenie:
https://rider-support.jetbrains.com/hc/en-us/community/posts/360000014284-Cannot-disable-auto-insert-pair-brackets?page=1#community_comment_360000933220
( yes, the settings are as they should be, yes, I've reset everything, yes I've invalidated the cache, yes it happens on new projects )

Note:
Just so we're 100% clear, I'm talking about typing
Mathf.Cla, it suggesting "Mathf.Clamp" ... but inserting '(' and ')' as well
-regardless of settings,
-in the wrong place
-ignoring formatting rules

 

Please sign in to leave a comment.