Like most professional software development companies, we are
constantly striving to improve coding standards and reliability to
cut costs and maintain good customer relationships. Although design
guidelines are a useful step toward this, at the sharp end of
coding it is not always possible to remember everything in a wide
range of documents whilst coding.
In order to improve the consistency of our coding we have
recently bought in the Jetbrains Resharper productivity tool. As
with all new tools, there is a mixture of gains and losses, but
overall the experience has been a very enlightening one. In order
to minimise developer downtime, one developer was chosen to
customise the menu options to conform to our design guidelines and
to switch off some of the (undoubtedly useful) features which we
didn't need. This template was then made available to all of the
developers so that everyone is now working in the same way.
The most immediately obvious benefits have been the highlighting
of potentially null references, unused variables, and methods or
properties hiding base members. The syntax conformance features are
very useful to make sure that all developers are coding in the same
style. Although the context highlighting can get somewhat confusing
whilst in the middle of typing lines, the benefit of highlighting
these potential pitfalls early is massive in regards to code
stability in the finished product.
A less obvious benefit is when using new versions of .NET. The
editor will suggest improvements in syntax which are a useful
roadmap to features which a developer may not be aware of.
The downside of all these suggestions is a cornucopia of
possible changes which are offered to the developer. These should
be avoided when working on existing projects (due to the risk of
introducing regression with a seemingly logical fix). When working
in this mode, it can be better to switch off analysis completely.
Although the product has generally been reliable, we have been
experiencing memory exceptions whilst working on larger projects,
which can slow things down somewhat.
Overall, the acquisition and deployment of a productivity tool
has been a massive boon to productivity. Although it cannot guard
against all code mistakes, it is a real help when tackling the
simple errors which make software look unprofessional and