У нас есть несколько коротких методов, которые преобразуют некоторые значения из одного домена в другой, обычно это огромный блок 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, которое предполагает это?




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