Правило проверки Intellij для упрощения условных алгоритмов

У нас есть несколько коротких методов, которые преобразуют некоторые значения из одного домена в другой, обычно это огромный блок switch или несколько ifs, например:

private DomainB translateSomething(final DomainA data) {
    DomainB result = null;
    if (data != null) {
            if (CONSTANT_A_VALUE_X.equals(data)) {
                result = CONSTANT_B_VALUE_X;
            } else if (CONSTANT_A_VALUE_Y.equals(data)) {
                result = CONSTANT_B_VALUE_Y;
            } else if (CONSTANT_A_VALUE_Z.equals(data)) {
                result = CONSTANT_B_VALUE_Z;
            } else {
                result = CONSTANT_B_VALUE_W;
            }
    }
    return result;
}

Это может быть switch вместо if, или он может иметь более одного условия на результат, или даже получить более одного домена в параметрах метода, чтобы помочь определить один единственный результат, поэтому это не может быть карта .

Когда я вижу это, я применяю короткое замыкание к первому условию и удаляю все блоки else, и вместо того, чтобы присваивать значение переменной, которая будет возвращена в конце, я помещаю возврат внутрь самого условия, что приводит к следующему коду :

private DomainB translateSomething(final DomainA data) {
    if (data == null) {
        return null;
    }
    if (CONSTANT_A_VALUE_X.equals(data)) {
        return CONSTANT_B_VALUE_X;
    }
    if (CONSTANT_A_VALUE_Y.equals(data)) {
        return CONSTANT_B_VALUE_Y;
    }
    if (CONSTANT_A_VALUE_Z.equals(data)) {
        return CONSTANT_B_VALUE_Z;
    }
    return CONSTANT_B_VALUE_W;
}

Я устал делать это несколько раз, я знаю, что IntelliJ очень помогает с правилами проверки, есть ли какое-то правило в IntelliJ, которое предполагает это?

Я понимаю, что это не совсем то, о чем вы просили, но альтернативным подходом может быть предоставление собственного конвертера для каждого из этих типов. Если конверсии достаточно похожи (какими они кажутся, поскольку все ваши возвраты имеют тип DomainB), вы можете создать шаблон кода для конвертера и просто создавать другой из шаблона, когда вам это нужно.

filpa 15.05.2019 18:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать быстрое исправление "Переместите return ближе к вычислению значения." для проверки «возврат» отделен от результата вычисления (Java | Проблемы со стилем кода | "возврат" отделен от вычисления результата), а затем применить быстрые исправления "удалить лишнее "еще"" для проверки Избыточное «еще» (Java | Проблемы с потоком управления | ').

Я увеличил их серьезность, а затем он начал сообщать, как и ожидалось!

Tiago Pimenta 16.05.2019 14:47

Другие вопросы по теме