Как исправить отправку формы ATG с помощью Ajax, НЕ устанавливая переменные FormHandler

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

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

private int getFooBarBazInt() {
    if (wsObject.getFoo() == null) return -1;
    if (wsObject.getFoo().getBar() == null) return -1;
    if (wsObject.getFoo().getBar().getBaz() == null) return -1;
    return wsObject.getFoo().getBar().getBaz().getInt();
}

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

Когда вы общаетесь с удаленной веб-службой, очень типично иметь «удаленный домен» и «домен приложения» и переключаться между ними. Удаленный домен часто ограничивается веб-протоколом (например, вы не можете отправлять вспомогательные методы назад и вперед в чистом RESTful-сервисе, а глубоко вложенные объектные модели являются общими, чтобы избежать множества вызовов API), и поэтому они не идеальны для прямого использования в ваш клиент.

Например:

public static class MyFoo {

    private int barBazInt;

    public MyFoo(Foo foo) {
        this.barBazInt = parseBarBazInt();
    }

    public int getBarBazInt() {
        return barBazInt;
    }

    private int parseFooBarBazInt(Foo foo) {
        if (foo() == null) return -1;
        if (foo().getBar() == null) return -1;
        if (foo().getBar().getBaz() == null) return -1;
        return foo().getBar().getBaz().getInt();
    }

}
0
задан Darrell Gold 30 March 2019 в 22:32
поделиться

0 ответов

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

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