Sobes.tech
Junior — Senior
44

Рефакторинг метода формирования отчёта

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

Метод myBusinessLogic получает объект inputData и в зависимости от его типа (CUSTOMER, NONE_CUSTOMER, VIP) формирует объект Report. Требуется переписать метод, устранив дублирование, повысив читаемость и подготовив его к дальнейшему расширению.

class SuperService {
    public Report myBusinessLogic(InputData inputData) {
        Report report;

        if (inputData.getType().equals("CUSTOMER")) {
            report = doWorkWithData(inputData);
        } else if (inputData.getType().equals("NONE_CUSTOMER")) {
            // 20 строк кода
            report = result;
        } else if (inputData.getType().equals("VIP")) {
            // 40 строк кода
            report = result;
        }

        return report;
    }
}