Friday September 18, 2009
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 unstable.