Replace Static Variable with Parameter
Refactoring contributed by
Marian Vittek
A function depending on a static variable needs to be reused in more general context.
Add a new parameter to the function and replace all references of the static variable within the
function by this new parameter.
void printValues() {
for (int i = 0; i < people.length; i++) {
System.out.println(people[i].name+" has salary "+people[i].salary);
}
}
public static void main(String args[]) {
...
printValues();
}
void printValues(PrintStream outfile) {
for (int i = 0; i < people.length; i++) {
outfile.println(people[i].name+" has salary "+people[i].salary);
}
}
public static void main(String args[]) {
...
printValues(System.out);
}
Motivation
The original function is using a static variable, but you wish either to reuse the function in new
project (not containing the static variable) or reuse the function in the same project but in more
general context.
Mechanics
- If the function calls other functions using the static variable in question, then use this
refactoring on all those invoked functions first.
- Use
Add Parameter to add a new argument to the function
- Add the static variable as actual argument to all callers of this function in.
- Replace all references to the static variable within the function by the new argument
| Refactoring Home | | Alphabetical List |