Избегайте условных утверждений при построении объекта - PullRequest
0 голосов
/ 25 апреля 2020

Мне нужно несколько предложений, чтобы реализовать элегантный способ избежать if-else. Я действительно не могу избежать условной проверки, мне нужно выполнить проверку, а затем добавить определенные свойства к объекту.

@Override
    public Summary addPropertyBasedOnType(AssignmentEvent assignmentEvent, String userId) {

        Summary summary = new Summary();
        summary.setTimestamp((new Timestamp(System.currentTimeMillis())).toString());
        summary.setUserId("");
        summary.setGradingProgress(GradingProgress.Started);
        summary.setComment(COMMENT);

        if (list.contains(assignmentEvent.getItemType())) {
            summary.setGradingProgress(GradingProgress.Incomplete);
            summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
            summary.setScoreGiven(ASSIGNMENT_MAX_SCORE);
        } else if (assignmentEvent.getItemType().equalsIgnoreCase("some string")) {
            summary.setGradingProgress(GradingProgress.PendingManual);
        } else if (assignmentEvent.getItemType().equalsIgnoreCase("test string")) {
            if (assignmentEvent.getLatestUserAssignmentData().getScoreSource().getSource() == 0) {
                summary.setGradingProgress(GradingProgress.FullyGraded);
                summary.setScoreGiven(assignmentEvent.getLatestUserAssignmentData().getScore());
                summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
            }

            if (assignmentEvent.getLatestUserAssignmentData().getScoreSource().getSource() == 1) {
                summary.setGradingProgress(GradingProgress.Started);
            }
        } else {
            summary.setGradingProgress(GradingProgress.Incomplete);
            summary.setScoreGiven(assignmentEvent.getLatestUserAssignmentData().getScore());
            summary.setScoreMaximum(ASSIGNMENT_MAX_SCORE);
        }
        return summary;
    }

Я думал о Factory Pattern, но думаю, что это излишне.

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