Информация об изменениях

Сообщение Уменьшить Cognitive Complexity метода. рефакторинг. от 13.09.2018 15:56

Изменено 13.09.2018 15:57 HAXT

Уменьшить Cognitive Complexity метода. рефакторинг.
Коллеги, подскажите пожалуйста способы которыми можно уменьшить когнитивную сложность метода, средствами Java 8 ?
Хотелось бы какое то элегантное решение может быть предикатами или лямбдами переделать. Есть какие идеи ?


    private void fillCvsColumnsValues(ExportOrderRequestDto request, ZoneId zoneId, DateTimeFormatter dateFormat,
                                      CsvBuilder csvBuilder, PageDto<IndexedDraftOrderDto> searchOrders) {
        for (IndexedDraftOrderDto o : searchOrders.getContent()) {

            if (request.getColumns().contains(ExportColumnEnum.NGP_ORDER_CODE)) {
                csvBuilder.addNextColumnValue(o.getOrderCode());
            }

            if (request.getColumns().contains(ExportColumnEnum.STATUS)) {
                csvBuilder.addNextColumnValue(isNull(o.getOrderState()) ? "" : ORDER_STATE_DESC.get(o.getOrderState()));
            }

            if (request.getColumns().contains(ExportColumnEnum.CUSTOMER)) {
                String name = nonNull(o.getCustomer()) ? o.getCustomer().getName() : "";
                csvBuilder.addNextColumnValue(name);
            }

            if (request.getColumns().contains(ExportColumnEnum.ANIMAL_COUNT)) {
                csvBuilder.addNextColumnValue(o.getNumberOfAnimals());
            }

            if (request.getColumns().contains(ExportColumnEnum.SAVED)) {
                csvBuilder.addNextColumnValue(formatDate(o.getSavedDate(), zoneId, dateFormat));
            }

            if (request.getColumns().contains(ExportColumnEnum.PRODUCT)) {
                List<String> products = Optional.ofNullable(o.getProducts()).orElse(Collections.emptyList()).stream()
                                                .map(IndexedProductDto::getProductName)
                                                .collect(Collectors.toList());
                csvBuilder.addNextColumnValue(products);
            }

            if (request.getColumns().contains(ExportColumnEnum.MARKET)) {
                csvBuilder.addNextColumnValue(o.getMarket());
            }

            csvBuilder.endRow();
        }
Уменьшить Cognitive Complexity метода. рефакторинг.
Коллеги, подскажите пожалуйста способы, которыми можно уменьшить когнитивную сложность метода, средствами Java 8
Хотелось бы какое то элегантное решение, может быть предикатами или лямбдами переделать. Есть какие идеи ?


    private void fillCvsColumnsValues(ExportOrderRequestDto request, ZoneId zoneId, DateTimeFormatter dateFormat,
                                      CsvBuilder csvBuilder, PageDto<IndexedDraftOrderDto> searchOrders) {
        for (IndexedDraftOrderDto o : searchOrders.getContent()) {

            if (request.getColumns().contains(ExportColumnEnum.NGP_ORDER_CODE)) {
                csvBuilder.addNextColumnValue(o.getOrderCode());
            }

            if (request.getColumns().contains(ExportColumnEnum.STATUS)) {
                csvBuilder.addNextColumnValue(isNull(o.getOrderState()) ? "" : ORDER_STATE_DESC.get(o.getOrderState()));
            }

            if (request.getColumns().contains(ExportColumnEnum.CUSTOMER)) {
                String name = nonNull(o.getCustomer()) ? o.getCustomer().getName() : "";
                csvBuilder.addNextColumnValue(name);
            }

            if (request.getColumns().contains(ExportColumnEnum.ANIMAL_COUNT)) {
                csvBuilder.addNextColumnValue(o.getNumberOfAnimals());
            }

            if (request.getColumns().contains(ExportColumnEnum.SAVED)) {
                csvBuilder.addNextColumnValue(formatDate(o.getSavedDate(), zoneId, dateFormat));
            }

            if (request.getColumns().contains(ExportColumnEnum.PRODUCT)) {
                List<String> products = Optional.ofNullable(o.getProducts()).orElse(Collections.emptyList()).stream()
                                                .map(IndexedProductDto::getProductName)
                                                .collect(Collectors.toList());
                csvBuilder.addNextColumnValue(products);
            }

            if (request.getColumns().contains(ExportColumnEnum.MARKET)) {
                csvBuilder.addNextColumnValue(o.getMarket());
            }

            csvBuilder.endRow();
        }