общепринятый вариант или скрытая разница в этих двух вариантах?
                  
                  
                  Мне второй нравится больше тем, что менее "простынно" выглядит
                  
                  
                  public Future<MyModelsResp> asyncGetModelsById(String id) {
                  
                  
                      if (condition) {
                  
                  
                          return executorService.submit(() -> {
                  
                  
                              // ...
                  
                  
                          });
                  
                  
                      }
                  
                  
                      return null;
                  
                  
                  }
                  
                  
                  
                  
                  
                  
                  
                  
                  vs
                  
                  
                  
                  
                  
                  public Future<MyModelsResp> asyncGetModelsById(String id) {
                  
                  
                      if (!condition) {
                  
                  
                          return null;
                  
                  
                      }
                  
                  
                      return executorService.submit(() -> {
                  
                  
                          // ...
                  
                  
                      });
                  
                  
                  }
                  
                  
                
я бы переделал на CompletableFuture, так как она композируется и не возвращал бы null никогда
а зачем налл возвращать, на крайняк есть Future.fail ?
третий вариант накину) я люблю прописывать такие штуки через явный else чтобы выражение внутри одной ветки не могли влиять на исполнение выражений в другой ветке и да лучше возвращать не null а completed future
прошу прощения, имел ввиду CompletableFuture#failedFuture()
Всегда пользуй второй вариант
Интересный вопрос.. Оказалось, что на этот случай есть класс AsyncHelper с методом, который принимает Future и делает проверку return feature != null ? feature.get() : null;, обёрнутую в try-catch, внутри catch содержится логика и кидаются кастомные IntegrationException
Да, в общем случае лучше. Я правильно понимаю, что в моём случае проблем особо нет, так как всё равно нужно проверять причину (exception.getCause()) и кидать кастомные эксепшны в блоке catch? https://t.me/jvmchat/462969. Если переписать на CompletableFuture, то просто в трае не будет тернарника
Обсуждают сегодня