Как избежать дублирования кода в этом вспомогательном методе для Java-класса?

Это быстрый хак: просто присвойте значение прокрутки очень большому числу. Это обеспечит прокрутку страницы донизу. Использование простого javascript:

document.body.scrollTop = 100000;
0
задан RonApple1996 18 March 2019 в 18:02
поделиться

2 ответа

В классе Foo вы можете поместить аннотации @Getter и @Setter в класс, чтобы избежать дублирования (обратите внимание, что если вы добавляете в этот класс другие закрытые атрибуты, которые не могут быть публичными, вы должны удалить аннотацию @Getter, чтобы выставить атрибут private):

@Getter
@Setter
public class Foo

О методе getWithBytesAndValues ​​я предлагаю вам поместить этот метод в класс Foo, потому что этот метод позволяет получить атрибуты Foo и установить другие атрибуты Foo (бизнес-правило взято из домена Foo - см. Дизайн, управляемый доменом). Вы также можете разделить внутреннюю логику двумя способами:

public class Foo {

...

    public void setBytes()
        setByte1();
        setByte2();
    }

    private void setByte2() {
        if (getByte2String() != null) {
            setByte2(new Base64(getByte2String()).decode());
            if (getByte2Value() == null) {
                setByte2Value(DEFAULT_BYTE_VALUE);
            }
        }
    }

    private void setByte1() {
        if (getByte1String() != null) {
            setByte1(new Base64(getByte1String()).decode());
            if (getByte1Value() == null) {
                setByte1Value(DEFAULT_BYTE_VALUE);
            }
        }
    }
}
0
ответ дан Allan Moreira Leite 18 March 2019 в 18:02
поделиться

Все простят меня за это. Советы Дж. Б. Низета намного лучше, но я хотел посмотреть, что я смогу сделать.

public static void touch(
        final Consumer<byte[]> setByte,
        final Consumer<? super String> setByteValue,
        final Supplier<String> byteString,
        final Supplier<String> byteValue) {
    if (byteString != null) {
        setByte.accept(Base64.getDecoder().decode(byteString.get()));
    }

    if (byteValue.get() == null) {
        setByteValue.accept(DEFAULT_BYTE_VALUE);
    }
}
<ч>
touch(
        foo::setByte1,
        foo::setByte1Value,
        foo::getByte1String,
        foo::getByte1Value
);

touch(
        foo::setByte2,
        foo::setByte2Value,
        foo::getByte2String,
        foo::getByte2Value
);
0
ответ дан LppEdd 18 March 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: