Сообщение Re: Уменьшить Cognitive Complexity метода. рефакторинг. от 02.10.2018 11:04
Изменено 02.10.2018 16:51 anton_t
Re: Уменьшить Cognitive Complexity метода. рефакторинг.
Здравствуйте, HAXT, Вы писали:
HAX>Коллеги, подскажите пожалуйста способы, которыми можно уменьшить когнитивную сложность метода, средствами Java 8
HAX>Хотелось бы какое то элегантное решение, может быть предикатами или лямбдами переделать. Есть какие идеи ?
Как-то так:
Код не компилировал, да и доступа к твоим исходникам у меня нет, так что может понадобиться доработка.
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();
}
Код не компилировал, да и доступа к твоим исходникам у меня нет, так что может понадобиться доработка.
Re: Уменьшить Cognitive Complexity метода. рефакторинг.
Здравствуйте, HAXT, Вы писали:
HAX>Коллеги, подскажите пожалуйста способы, которыми можно уменьшить когнитивную сложность метода, средствами Java 8
HAX>Хотелось бы какое то элегантное решение, может быть предикатами или лямбдами переделать. Есть какие идеи ?
Как-то так:
Код не компилировал, да и доступа к твоим исходникам у меня нет, так что может понадобиться доработка.
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();
}
Код не компилировал, да и доступа к твоим исходникам у меня нет, так что может понадобиться доработка.