Sobes.tech
Junior — Senior
52

Рефакторинг повторяющегося кода в публичных методах класса

Компании, где спрашивали:

AstonAston
Условие задачи

В классе 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");
        }

    }
}