Simplifying Method Calls

These techniques make method calls simpler and easier to understand. This, in turn, simplifies the interfaces for interaction between classes.

Rename Method

Problem: The name of a method does not explain what the method does.

Solution: Rename the method.

Add Parameter

Problem: A method does not have enough data to perform certain actions.

Solution: Create a new parameter to pass the necessary data.

Remove Parameter

Problem: A parameter is not used in the body of a method.

Solution: Remove the unused parameter.

Separate Query from Modifier

Problem: Do you have a method that returns a value but also changes something inside an object?

Solution: Split the method into two separate methods. As you would expect, one of them should return the value and the other one modifies the object.

Parameterize Method

Problem: Multiple methods perform similar actions that are different only in their internal values, numbers or operations.

Solution: Combine these methods by using a parameter that will pass the necessary special value.

Replace Parameter with Explicit Methods

Problem: A method is split into parts, each of which is run depending on the value of a parameter.

Solution: Extract the individual parts of the method into their own methods and call them instead of the original method.

Preserve Whole Object

Problem: You get several values from an object and then pass them as parameters to a method.

Solution: Instead, try passing the whole object.

Replace Parameter with Method Call

Problem: Before a method call, a second method is run and its result is sent back to the first method as an argument. But the parameter value could have been obtained inside the method being called.

Solution: Instead of passing the value through a parameter, place the value-getting code inside the method.

Introduce Parameter Object

Problem: Your methods contain a repeating group of parameters.

Solution: Replace these parameters with an object.

Remove Setting Method

Problem: The value of a field should be set only when it is created, and not change at any time after that.

Solution: So remove methods that set the field's value.

Hide Method

Problem: A method is not used by other classes or is used only inside its own class hierarchy.

Solution: Make the method private or protected.

Replace Constructor with Factory Method

Problem: You have a complex constructor that does something more than just setting parameter values in object fields.

Solution: Create a factory method and use it to replace constructor calls.

Replace Error Code with Exception

Problem: A method returns a special value that indicates an error?

Solution: Throw an exception instead.

Replace Exception with Test

Problem: You throw an exception in a place where a simple test would do the job?

Solution: Replace the exception with a condition test.