Home > Refactorings > CodeRush encapsulation refactorings

CodeRush encapsulation refactorings

July 23rd, 2012

As we know, Encapsulation is an important object-oriented programming concept. It is also known as a data hiding mechanism. Encapsulation enables a group of properties, methods and other members to be considered a single unit or object. The idea of encapsulation is that an object’s internal data should not be directly accessible from an object instance. With correct encapsulation, a developer does not need to understand how the class actually operates in order to communicate with it via its publicly available methods and properties.

CodeRush has several refactorings that allow you to encapsulate fields and its members easily. They are:

  • Encapsulate Field
  • Encapsulate Field (read-only)
  • Encapsulate Method
  • Encapsulate Property
  • Encapsulate Event

The Encapsulate Field refactoring encapsulates a field into a read-write property and replaces all occurrences of this field with the newly declared property. If a field is non-private, the refactoring will change it into a private field (encapsulation). The new property is given the same visibility as the original field (e.g., public, internal, etc.).

Apply the refactoring to an active field to encapsulate it:

CodeRush Encapsulate Field preview

You can choose the target location of the property with the help of a target picker:

CodeRush Encapsulate Field Target Picker

The resulting property looks like this:

CodeRush Encapsulate Field result

The second Encapsulate Field (read-only) refactoring is absolutely the same as Encapsulate Field, but creates a read-only property without writing access:

CodeRush Encapsulate Field (read-only) result

The other refactorings are also available on a field. They allow you to encapsulate a property, a method or an event of a field. These refactorings create new accessing members to members of an instance of a field.

Consider we have the following field declaration:

CodeRush Field sample

These refactorings allows you to choose which member you would like to encapsulate. For instance, the Encapsulate Method refactoring:

CodeRush Encapsulate Method menu preview

The refactoring will produce the corresponding code once applied:


Here is the result of Encapsulate Property for the AutoReset property:

CodeRush Encapsulate Property result

And finally, the result of the Encapsulate Event for the XXX event:

CodeRush Encapsulate Event result

All refactorings allow you to choose the target location and drop a marker to easily move back at the original location where the refactoring was applied.

Happy encapsulation using CodeRush!

Products: CodeRush Pro
Versions: 12.1 and up
VS IDEs: 2008 and up
Updated: Jul/23/2012
ID: R057

Similar Posts: