Dotnet logo

The .NET Tools Blog

Essential productivity kit for .NET developers

.NET Tools How-To's

Refactor object-oriented code with ReSharper

Object-oriented programming is a popular programming paradigm. Many developers create object models for use in object-oriented systems. When those models are built, they often need to undergo some refactoring so that they are efficient, readable, and maintainable. ReSharper is there to help you make your object models better.

Refactor classes

You may have created a specific class such as a CheckingAccount class, and later find out that requirements have changed and you’ll need other types of accounts that are specific as well. This means you’ll have to modify your object model so that there is a generic base class, and the CheckingAccount and new classes derive from it.

Use Refactor This (Ctrl+Shift+R) in ReSharper to create super classes and derived classes in a snap.

In the following example, the members of the CheckingAccount class are more appropriate in the BankAccount base class.

Refactor and create a superclass

From this point you can create new derived classes from the parent BankAccount class, such as a SavingsAccount or MoneyMarketAccount. (Alt+Enter)

Create a derived class

During this process, you might find that some members in a class are now not well suited for that class. Since you have an inheritance hierarchy, you can move members around so they fit into the right class. No need to cut and paste! Use Alt+Enter to push members up or down the inheritance chain.

Push members down to a derived class

Refactor constructors

As you go through the code, you’ll notice that ReSharper indicates opportunities for improvement. Use Alt+Enter, and see what the intention suggests.

As an example, a field such as the _minimumBalance is something that should be set in the constructor, perhaps after reading the value from a database.

Initialize field from constructor

Refactor fields

Many developers mock-up classes in code by adding a series of fields and they later change them into properties. This workflow gives an overall picture of the classes, their properties, and their relationships in code. But then you must refactor many of the fields into properties to enforce business rules about the data in those classes.

ReSharper contains an Encapsulate Field refactoring that converts fields to properties – auto properties, expression-bodied properties, or read-only or write-only properties.

Encapsulate field

Refactor Properties

Utilizing ReSharper’s expression-bodied property refactorings are an excellent way to modernize the syntax of an existing .NET application. Expression-bodied syntax makes the code more concise and readable.

Expression-bodied properties are backing properties that have been condensed into a single expression, using a lambda. Use Alt+Enter for this refactoring.

Convert method to an expression-bodied method

ReSharper allows you to change the access modifiers of a property or method between private, public, internal, protected, and private protected, with Alt+Enter. This enables you to create a robust object-oriented data model.

Mark a class member as private

Refactor for class maintainability

Developers may put classes in a single file for various reasons. Sometimes, this ends up with a bloated and difficult-to-maintain file. Moving these classes to their own locations helps make software more maintainable.

ReSharper notices when there are multiple files in a class and displays a hint notifying you that classes can be moved to their own file. Use Alt+Enter to move the classes and verify the file name.

Move a class to its own file

Summary

ReSharper is great for creating and refactoring object-oriented models. With just a few keystrokes, you can form object models to meet the precise requirements of your application. It covers all object-oriented programming refactorings from abstraction to properties.

Try out ReSharper, then let us know what you think!

Discover more