roanbrasil / clean-code-tdc

Clean Code Java 8 to 14 TDC

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sugestões

otaviojava opened this issue · comments

Não ficou claro para min o motivo do get(0) nessa linha de código.
Um outro ponto, o que aconteceria se o response.getComplexGroupList() estivesse vazio?
IMHO: O melhor seria se o ComplexDataStreamExample fosse mais rico e retornasse algo como getFirstGrouop

final List<Complex> complexList = response.getComplexGroupList().get(0).getComplexList();

O retorno já é um filtro é está dentro de um método privado, eu colocaria um nome mais explito o que ele faz.
Por exemplo:

.filter(byPaymentMethod(paymentMethodToSearch))

.filter(complexFilterByPaymentMethod(paymentMethodToSearch))

Vc vazou o encapsulamento aqui. Acho que seria mais semântico adicionar o pagamento e lá dentro ele define o tipo.

 payment.add(debit);

Vc só utiliza esse método uma única vez, pq não mapea para retornar o que vc quer?

    final String paymentTypeDescription = getCurrentPaymentMethod(complex);

final String paymentTypeDescription = getCurrentPaymentMethod(complex).getAttributeValue();

Eu levaria essa lógica de construção toda para dentro do débito de alguma forma, por exemplo, com um builder

Debit debit = Debit.of(paymentTypeDescription, simpleValueListFromTarget);
payment.add(debit);     

final Debit debit = new Debit();
debit.setPaymentTypeDescription(paymentTypeDescription);
simpleValueListFromTarget
.forEach(simpleValue ->
ValueType.findByName(simpleValue.getAttributeName())
.setDebit(debit, simpleValue.getAttributeValue())
);

ps: Complex mapper, confesso que senti falta do contexto, parece que é algo de pagamento, não? E se fosse PaymentDataStream? Talvez inseria um pouco de DDD e linguagem ubiqua.
Pq está muito complexo: Uma lista que mappea complexo, que retorno complexo, que tem filtro complexo.
Tá as vezes tem o simple :)