Уменьшить дублирование кода в андроид Firestore - PullRequest
0 голосов
/ 26 апреля 2018

Я действительно борюсь с Firestore, чтобы уменьшить дублирование кода. Недавно я задал вопрос с другой темой, но немного похожая проблема. Здесь я задаю вопрос, как я могу уменьшить дублирование кода в Android для Firestore?

Предположим, мне нужно получить документ city с именем city, а затем каждый раз писать этот код.

db.collection("cities")
    .whereEqualTo("name", name)
    .get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot query) {
            query.getDocuments().get(0).getReference(); 
           // make custom call back here to get the value of this 
           // outside of here but that is not enough to reduce 
           // duplication of code.
        }
    });

Предположим, мне нужно получить 10 документов, и это может быть около ста раз в приложении, тогда 100*10 = 1000 время дублирования аналогичного кода, правда? Я не нашел решения этой проблемы. Я не знаю, почему не хватает информации об этом? есть ли кодовые паттерны для Firestore? что может помочь мне сократить мои усилия по переписыванию кода?

Не знаю, почему это заставляет меня ненавидеть Firestore в контексте дублирования кодирования. -_-

@ Downvoter, если вы думаете, что это глупый вопрос, пожалуйста, уточните почему? Вы знаете ответ? или есть похожий вопрос с ответом?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете немного уменьшить дублирование, определив этот метод:

void addCityListener(String name, OnSuccessListener<QuerySnapshot> listener){
    db.collection("cities")
      .whereEqualTo("name", name)
      .get()
      .addOnSuccessListener(listener);
}

Затем вы вызываете метод следующим образом:

addCityListener(name, new OnSuccessListener<QuerySnapshot>(){
    @Override
    public void onSuccess(QuerySnapshot query){
        // do something with the query
    }
});

и если вы используете Java 8 в своем проекте, вы можете еще больше сократить код, используя лямбду:

addCityListener(name, (QuerySnapshot query)->{
    // do something with the query
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...