Introduce Setter Guard Clause
In This Article
Introduces a value changed check at the start of a property setter, exiting early if the value matches the backing store.
#Availability
Available from the context menu or via shortcuts:
- when the edit cursor, or caret is on a setter keyword.
Note
This refactoring works only with .NET language constructs.
#Notes
- This refactoring searches for the first local variable used in the setter. A condition, that compares this variable to the assigned value, is then inserted to the top of the setter body. If this condition is satisfied, a return statement is executed.
#Examples
protected int _PropertyName;
public int PropertyName
{
get
{
return _PropertyName;
}│set
{
_PropertyName = value;
}
}
Protected _propertyName As Integer
Public Property PropertyName() As Integer
Get
Return _propertyName
End Get│Set(ByVal Value As Integer)
_propertyName = Value
End Set
End Property
Result:
protected int _PropertyName;
public int PropertyName
{
get
{
return _PropertyName;
}│set
{
if (_PropertyName == value)
return;
_PropertyName = value;
}
}
Public Property PropertyName() As Integer
Get
Return _propertyName
End Get│Set(ByVal Value As Integer)
If _propertyName = Value Then
Return
End If
_propertyName = Value
End Set
End Property