abler98
@abler98
Software Engineer

Что можете сказать по этому коду?

Вот есть код отправки запроса для выполнения простого действия - удаление/добавление метки "избранное":
protected void toggleFavorite() {
        if (favoriteRequest != null && favoriteRequest.executing()) {
            favoriteRequest.cancel();
        }

        if (favoriteRequest == null) {
            favoriteRequest = new BouquetRequest(getApplicationContext());

            favoriteRequest.setListener(new BouquetRequest.Listener()
            {
                @Override
                public void success(String message, @Nullable Object data) {
                    try {
                        if (data == null) {
                            favorites.delete(favorite);
                            favorite = null;
                        } else {
                            favorite = Favorite.fromJson((JSONObject) data);
                            favorites.create(favorite);
                        }
                    } catch (IOException|SQLException e) {
                        Toast.makeText(getApplicationContext(), R.string.unknown_error,
                                Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void error(String error, String code, @Nullable Object data) {
                    Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show();
                }
            });

            favoriteRequest.before(new BouquetRequest.BeforeCallback()
            {
                @Override
                public void run(StringRequest request) {
                    mFavoriteButton.setEnabled(false);
                }
            });

            favoriteRequest.after(new BouquetRequest.AfterCallback()
            {
                @Override
                public void run(@Nullable NetworkResponse response) {
                    mFavoriteButton.setEnabled(true);
                }
            });
        }

        favoriteRequest
                .setMethod(favorite == null ? BouquetRequest.POST : BouquetRequest.DELETE)
                .setAction(favorite == null ? "favorite" : "favorite/:id");

        if (favorite != null) {
            favoriteRequest.bindParam("id", favorite.id);
        }

        favoriteRequest.execute();
    }


Дело в том, что в одной Activity/Fragment может быть до 10 подобных действий, в итоге получится не мало кода на одни только запросы.

BouquetRequest - обёртка над Volley, делал с надеждой упросить отправку запросов, но как-то не очень эффективно получилось.

Собственно вопрос: если бы вам достался проект с таким кодом на доработку, каковы будут мысли о предшествующем программисте? И стали бы вы что-то менять в логике построения запросов?

P.S. Хочу определиться с подходом на раннем этапе разработки, чтобы потом было проще найти человека на замену.
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Ужасно, я бы выкинул всё это, взял Retrofit, RxJava, вынес бы это из фрагмента/активити в презентер и жил бы припеваючи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы