- Home /
Overloaded methods with one minor difference... Any way to refactor?
Hopefully this isn't too daft, but I'm still somewhat new, and I've got a method that creates and animates an RPG-style textbox, like one of these: https://www.youtube.com/watch?v=d8JAs0PnuhU#t=33
The base method just takes text and uses a default sound and color. I have overloads with extra parameters for those, but it's a hassle to update all of them and has confused me multiple times when I forgot. The bodies are exactly the same except for one line. Is there any way to have it more centralized without having to call it like ("text",null,null) or something?
Answer by Dracorat · Jul 22, 2014 at 08:43 PM
The way you should do is to have the actual working code only in the most specific body.
Each overload that simplifies the use of the method would call the specific method but supply the default parameters that aren't specified.
To wit, instead of:
class Example {
public Example() {
Console.WriteLine("Hello, Bobby");
}
public Example(string user) {
Console.WriteLine("Hello, " + user);
}
public Example(string user, string greeting) {
Console.WriteLine(greeting + ", " + user);
}
}
You would write these like this:
class Example {
public Example() {
Example("Bobby", "Hello");
}
public Example(string user) {
Example(user, "Hello");
}
public Example(string user, string greeting) {
Console.WriteLine(greeting + ", " + user);
}
}
Which allows you to edit only the third method to add additional functionality and thus, edit only once even though you retain the flexibility of multiple ways to use your method.
Answer by Tehnique · Jul 22, 2014 at 08:02 PM
Yeah, the methods with more parameters should call the ones with less parameters. So you have a method with 2 params, and one with 1. The 2 param method does whatever it has to do with the second param, and then calls the other method with the common parameter.
This way you have each piece of logic in only 1 place.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Setting variable when method called 1 Answer
what is wrong whis this? 1 Answer