roanbrasil / clean-code-tdc

Clean Code Java 8 to 14 TDC
17 stars 5 forks source link

Sugestões #1

Closed otaviojava closed 4 years ago

otaviojava commented 4 years ago

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

https://github.com/roanbrasil/clean-code-tdc/blob/27e6f07825882af5a9bddc5e0c2fe790054ccaec/src/main/java/com/tdc/cleancode/complex/after/ComplexMapperCleanCode.java#L22

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))

https://github.com/roanbrasil/clean-code-tdc/blob/27e6f07825882af5a9bddc5e0c2fe790054ccaec/src/main/java/com/tdc/cleancode/complex/after/ComplexMapperCleanCode.java#L26

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

 payment.add(debit);

https://github.com/roanbrasil/clean-code-tdc/blob/27e6f07825882af5a9bddc5e0c2fe790054ccaec/src/main/java/com/tdc/cleancode/complex/after/ComplexMapperCleanCode.java#L52

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

    final String paymentTypeDescription = getCurrentPaymentMethod(complex);

https://github.com/roanbrasil/clean-code-tdc/blob/27e6f07825882af5a9bddc5e0c2fe790054ccaec/src/main/java/com/tdc/cleancode/complex/after/ComplexMapperCleanCode.java#L37

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);     

https://github.com/roanbrasil/clean-code-tdc/blob/27e6f07825882af5a9bddc5e0c2fe790054ccaec/src/main/java/com/tdc/cleancode/complex/after/ComplexMapperCleanCode.java#L43-L50

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 :)

roanbrasil commented 4 years ago

Done