более оптимизированный способ записи if-else - PullRequest
0 голосов
/ 30 апреля 2018

Я новичок в Java, как правильно написать блок if и else с кодом ниже Пожалуйста, дайте мне знать, что я реализовал неправильно. И я должен использовать все это, если ... еще 3 блока с различными условиями. И я получаю весь вывод, но я хочу сделать его более оптимизированным. Я думаю, что мы можем использовать константный класс, чтобы сделать его более оптимизированным

if (roleName.equalsIgnoreCase("Project Manager")) {
    if (actionsPerform.equalsIgnoreCase("Approval")) {
        reimbursementHistory.setOldStatus(0);
        reimbursementHistory.setNewStatus(1);
        reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get("businessUnitId"));
        reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get("projectManagerId"));
    }
    else if (actionsPerform.equalsIgnoreCase("Query")) {
        reimbursementHistory.setOldStatus(1);
                                reimbursementHistory.setNewStatus(6);
        reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get("projectManagerId"));
        reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get("empCode"));
    }
}

1 Ответ

0 голосов
/ 30 апреля 2018

Исходя из сложности вашего условия, я сохраню эти параметры в Map, используя простой POJO.

private static final class Params{
    final int oldStatus;
    final int newStatus;
    final String AssignTo;
    final String AssignNe;

    public Params(int oldStatus, int newStatus, String assignTo, String assignNe) {
        this.oldStatus = oldStatus;
        this.newStatus = newStatus;
        this.AssignTo = assignTo;
        this.AssignNe = assignNe;
    }
}

Затем сначала создайте каждый параметр

private static Map<String, Params> params = new HashMap<>();

public static void main(String[] args) {
    params.put("Approval", new Params(0,  1, "businessUnitId", "projectManagerId"));
    params.put("Query", new Params(1,  6, "empCode", "projectManagerId"));
}

Тогда вам просто нужно определить метод для установки значений

public boolean setHistory(Params p){
    reimbursementHistory.setOldStatus(p.oldStatus);
    reimbursementHistory.setNewStatus(p.newStatus);
    reimbursementHistory.setAssignTo((String) reimbursementHistoryDetails.get(p.AssignTo));
    reimbursementHistory.setAssignne((String) reimbursementHistoryDetails.get(p.AssignNe));
}

И вызвать его, используя ссылку на метод, и Optional

Optional.of(params.get("Query"))
    .map(this::setHistory)
    .orElseThrow(IllegalArgumentException::new);

Использование Optional позволяет легко вызвать исключение, если оно не найдено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...