Как стать автором
Обновить

Комментарии 10

я наставник на курсе «Java-разработчик» ...

Рановато вам в наставники. Самому бы подучиться.

Hidden text

> ... воспользуемся классом Optional ...

Зачем?

new Scanner(System.in).nextLine()

Зачем?

for (var i = 1; i < 32; i = i * 2)

Зачем? for (Integer i : SECRETS.keySet()), проверку на обратный порядок сделать отдельно после цикла.
Для реверса списка тоже специальный метод имеется. Не говоря уже о том, что вместо списка можно было просто двунаправленную очередь использовать.

actions.size() > 0

(Челодлань)

А почему экзепшн final: final NumberFormatException e?

Чтобы игнорируемое непроверяемое исключение было на всякий случай иммутабельным. Вероятно, причина в секретности рукопожатия. Но тогда где private и замена стрингов на массив чаров. Чувствуется некая недосказанность в коде.

Optional он для stream api сделан, в вашем случае можно гораздо проще и точно также без единого null-a (и без Optional)

    public static void main(final String[] args) {
        try {
            System.out.print("Действия: " + getHandshake(number()));
        } catch (Exception e) {
            // ignore
        }
    }

    static int number() {
        System.out.println("Введите число:");
        var number = Integer.parseInt(new Scanner(System.in).nextLine());
        if (number < 1 || number > 31) {
            throw new IllegalArgumentException();
        }
        return number;
    }

Тут смысл в том, чтобы попробовать те техники, которые сейчас широко используются, в том числе - функциональный подход.

А почему Optional.of, а не Optional.ofNullable?

Integer.parseInt не может возвратить null

for (var i = 1; i < 32; i = i * 2)

Может лучше заменить умножение на 2 на сдвиг влево на один бит? Будет явно быстрее.

Возможно. Хотя сейчас везде, в том числе в JDK такие оптимизации делаются автоматически, за счёт них читабельность кода можно улучшать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий