Refactoring Day 5 : Pull Up Field


Today we look at a refactoring that is similar to the Pull Up method. Instead of a method, it is obviously done with a field instead!

   1: public abstract class Account
<pre><span class="lnum">   2:</span> {</pre>

<pre><span class="lnum">   3:</span> }</pre>

<pre><span class="lnum">   4:</span>&#160; </pre>

<pre><span class="lnum">   5:</span> <span class="kwrd">public</span> <span class="kwrd">class</span> CheckingAccount : Account</pre>

<pre><span class="lnum">   6:</span> {</pre>

<pre><span class="lnum">   7:</span>     <span class="kwrd">private</span> <span class="kwrd">decimal</span> _minimumCheckingBalance = 5m;</pre>

<pre><span class="lnum">   8:</span> }</pre>

<pre><span class="lnum">   9:</span>&#160; </pre>

<pre><span class="lnum">  10:</span> <span class="kwrd">public</span> <span class="kwrd">class</span> SavingsAccount : Account</pre>

<pre><span class="lnum">  11:</span> {</pre>

<pre><span class="lnum">  12:</span>     <span class="kwrd">private</span> <span class="kwrd">decimal</span> _minimumSavingsBalance = 5m;</pre>

<pre><span class="lnum">  13:</span> }</pre></p>

In this example, we have a constant value that is duplicated between two derived classes. To promote reuse we can pull up the field into the base class and rename it for brevity.

   1: public abstract class Account
<pre><span class="lnum">   2:</span> {</pre>

<pre><span class="lnum">   3:</span>     <span class="kwrd">protected</span> <span class="kwrd">decimal</span> _minimumBalance = 5m;</pre>

<pre><span class="lnum">   4:</span> }</pre>

<pre><span class="lnum">   5:</span>&#160; </pre>

<pre><span class="lnum">   6:</span> <span class="kwrd">public</span> <span class="kwrd">class</span> CheckingAccount : Account</pre>

<pre><span class="lnum">   7:</span> {</pre>

<pre><span class="lnum">   8:</span> }</pre>

<pre><span class="lnum">   9:</span>&#160; </pre>

<pre><span class="lnum">  10:</span> <span class="kwrd">public</span> <span class="kwrd">class</span> SavingsAccount : Account</pre>

<pre><span class="lnum">  11:</span> {</pre>

<pre><span class="lnum">  12:</span> }</pre></p>

 

This is part of the 31 Days of Refactoring series. For a full list of Refactorings please see the original introductory post.

← Refactoring Day 4 : Push Down Method
Refactoring Day 6 : Push Down Field →