Javanese Online

Зашкварные способы писать код

Писать новый класс, невзирая на существующие

private static class SomeViewHolder extends RecyclerView.ViewHolder {
    SomeViewHolder(View itemView) {
        super(itemHolder);
    }
}

Правильное решение: оглянуться вокруг в поисках подходящих классов. В проекте уже может быть несколько таких пустых ViewHolder'ов.

Аналогично, если абстрактный класс не выполняет своё предназначение или работает ошибочно, его нужно удалить или исправить, но не избегать.

Генерировать геттеры и мутаторы ко всем полям

private int count;

public int getCount() {
    return count;
}

public void setCount(int count) {
    this.count = count;
}

Правильное решение: разобраться, какие поля можно мутировать, а какие предназначены только для чтения, и генерировать только то, что нужно.

Наполнять новый объект мутацией

Item item = new Item();
item.setAaa(another.getAaa());
item.setBbb(another.getBbb());
item.setCcc(another.getCcc());

Правильное решение — конструктор или статическая фабрика для этих целей:

public Item(Another another) {
    this.aaa = another.getAaa();
    this.bbb = another.getBbb();
    this.ccc = another.getCcc();
}
public static Item from(Another another) {
    return new Item(another.getAaa(), another.getBbb(), another.getCcc());
}

В качестве бонуса поля можно сделать финальными.

Писать классы-обёртки

, которые нужны только для того, чтобы добраться до нужной информации, заботливо завёрнутой бэк-эндом в три шкуры:


{
    "data": {
        ...
    }
}
public class SomeResponse {

    private Data data;

    public Data getData() {
        return data;
    }

    public static class Data {

        ...

    }
}
{
    "data":{
        "items": [
            ...
        ]
    }
}
public class SomeResponse {

    private Data data;

    public Data getData() {
        return data;
    }

    public static class Data {

        private List<Item> items;

        public List<Item> getItems() {
            return items;
        }
    }
}

Правильное решение: зарегистрировать TypeAdapter'ы.

Комментарии к статье

{"type":"articleComments","id":"9b8020ab-bde5-464f-bd3e-810f778a1a16","comments":[]}

Javanese.Online в GitHub

Чаты и каналы в Telegram

RSS-лента