Junior — Senior
52
Рефакторинг повторяющегося кода в публичных методах класса
Компании, где спрашивали:
Условие задачи
В классе SomeClass есть два открытых метода (someMethod и someAnotherMethod), которые практически полностью совпадают. Единственное различие — вызов разных вспомогательных функций (doSomething и doAnotherSomethingElse). Необходимо:
- вынести общую часть в отдельный приватный метод;
- заменить дублирующий код вызовами нового метода;
- сохранить исходную функциональность.
public class SomeClass {
public void someMethod() {
System.out.println("do something 1");
System.out.println("do something 2");
SomeUtilityClass.doSomething();
System.out.println("do something 3");
System.out.println("do something 4");
}
public void someAnotherMethod() {
System.out.println("do something 1");
System.out.println("do something 2");
SomeUtilityClass.doAnotherSomethingElse();
System.out.println("do something 3");
System.out.println("do something 4");
}
static class SomeUtilityClass {
static void doSomething() {
System.out.println("do something");
}
static void doAnythingElse() {
System.out.println("do anything else");
}
}
}