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
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 :)
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 oComplexDataStreamExample
fosse mais rico e retornasse algo comogetFirstGrouop
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:
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.
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?
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
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 :)