Использование функций Java 8 вместо нескольких if - PullRequest
3 голосов
/ 10 мая 2019

У меня есть код ниже, getBrand и calculateSum - это некоторые функции, которые возвращают значение. Я хотел бы сжать этот код, используя функции Java 8. Я хотел бы избавиться от нескольких, если это возможно. Возможно ли использовать функции Java 8?

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class Q56068628 {

    static class Brand {
        public Set<Location> locations() { return Collections.emptySet(); }
    }
    static class Location {}
    static class Product {}

    int getSum(int price, Product p){
        int sum = 0;
        if(price > 0){
           Brand b = getBrand(p); // getBrand takes type Product as argument
           if( b !=null){
              Set<Location> s = new HashSet<>();
              s.addAll(b.locations());
              for(Location l : s){
                sum = calculateSum(l, sum); /* calculateSum function takes location
                            argument and calculates sum. Sum value is replaced for
                          each for loop call */
              }
           }
        }
       return sum;
    }

    private Brand getBrand(Product p ){
    //// some code returns brand
        return null;
    }

     private int calculateSum(Location l, int sum ){
        //// some code returns an integer
        return 0;
     }

}

1 Ответ

0 голосов
/ 10 мая 2019

Возможно, но оператор if обычно дешевле, чем вызов метода, плюс людям, которые не знают этих API, легче читать.Одним из улучшений, которое вы могли бы рассмотреть, является следующее:

private Optional<Brand> getBrand(Product p ){
   //...
   //something...
   if (condition) { return Optional.ofNullable(new Brand(p)); }
   else { return Optional.empty(); }
}

Тогда:

Optional<Brand> brand = getBrand(p);
if (brand.isPresent()) {
  Brand b = brand.get();
}

Намного безопаснее при обработке нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...