Javanese Online

Повсеместный @Expose, передёргивание списков

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

Алексей


Возможные ошибки

Бессмысленные действия

public static void fetchStatusList(final OnDownloadListener downloadCompleteListener){
    if(!NetworkStatusChecker.isNetworkAvalible(DataManager.getInstance().getContext())){
        downloadCompleteListener.onDownloadFailed("Загрузка невозможно, проверьте интернет соединение");
    }
    String searchTag = DataManager.getInstance().getPreferencesManager().getSearchTag();
    if(searchTag.equals("")|| searchTag.isEmpty()){
        fetchRecentPublic(downloadCompleteListener);
    }else {
        fetchStatusesByTeg(downloadCompleteListener, searchTag);
    }
}
@SerializedName("id")
@Expose
private String id;
@SerializedName("created_at")
@Expose
private String createdAt;
@SerializedName("in_reply_to_id")
@Expose
private Object inReplyToId;
@SerializedName("in_reply_to_account_id")
@Expose
private Object inReplyToAccountId;
@SerializedName("sensitive")
@Expose
private Boolean sensitive;
...
public static DataManager getInstance() {
    if (INSTANCE == null) {
        INSTANCE = new DataManager();
    }
    return INSTANCE;
}
list.clear();
list.addAll(anotherList);

Как бы назвать этот антипаттерн... передёргивание списка. Можно же просто заменить старый новым. Чем меньше объекты изменяешь, тем меньше появляется багов. (Поэтому живут и здравствуют функциональные языки.)

mStatusListAdapter = new StatusListAdapter(mStatusList, this);
mRecyclerView.setAdapter(mStatusListAdapter);
if(mStatusList.size()!=0){
    mStatusListAdapter.notifyDataSetChanged();
}else {
    StatusListFetcher.fetchStatusList(mDownloadCompleteListener);
}

Нет смысла уведомлять свежесозданный адаптер об изменениях.

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

Именование

Отступы

Обработка ошибок

if(response.isSuccessful()) {. А если нет?

Строки

Кучу раз говорил, строки должны быть в ресурсах.

Загрузка невозможно, проверьте интернет соединение. Загрузка женского рода, она невозможна. Интернет-соединение пишется через дефис.

Javanese.Online в GitHub

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

RSS-лента