Re: Уменьшить Cognitive Complexity метода. рефакторинг.
От: anton_t Россия  
Дата: 02.10.18 11:04
Оценка:
Здравствуйте, HAXT, Вы писали:

HAX>Коллеги, подскажите пожалуйста способы, которыми можно уменьшить когнитивную сложность метода, средствами Java 8

HAX>Хотелось бы какое то элегантное решение, может быть предикатами или лямбдами переделать. Есть какие идеи ?

Как-то так:

 private void addColumn(ExportOrderRequestDto request, ExportColumnEnum column, Supplier<Object> supplier) {
            if (request.getColumns().contains(column)) {
                csvBuilder.addNextColumnValue(supplier.get());
            }   
 }
 
 private void fillCvsColumnsValues(ExportOrderRequestDto request, ZoneId zoneId, DateTimeFormatter dateFormat,
                                      CsvBuilder csvBuilder, PageDto<IndexedDraftOrderDto> searchOrders) {
        for (IndexedDraftOrderDto o : searchOrders.getContent()) {
            addColumn(request, ExportColumnEnum.ORDER_CODE, () -> o.getOrderCode());
            addColumn(request, ExportColumnEnum.STATUS, () -> o.getOrderState()) ? "" : ORDER_STATE_DESC.get(o.getOrderState()));
            addColumn(request, ExportColumnEnum.CUSTOMER, () -> o.getOrderState()) ? "" : ORDER_STATE_DESC.get(o.getOrderState()));
            addColumn(request, ExportColumnEnum.ANIMAL_COUNT, () -> o.getNumberOfAnimals());
            addColumn(request, ExportColumnEnum.SAVED, () -> formatDate(o.getSavedDate(), zoneId, dateFormat));
            addColumn(request, ExportColumnEnum.PRODUCT, () -> Optional.ofNullable(o.getProducts())
                                                    .orElse(Collections.emptyList()).stream()
                                                    .map(IndexedProductDto::getProductName).collect(Collectors.toList()));
            addColumn(request, ExportColumnEnum.MARKET, () -> o.getMarket());

            csvBuilder.endRow();
        }


Код не компилировал, да и доступа к твоим исходникам у меня нет, так что может понадобиться доработка.
Отредактировано 02.10.2018 16:51 anton_t . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.