Não seria mais interresante que a regra de aplicar cupom estivesse em outro ponto do código?
O form além da responsabilidade de proteger a borda externa, também atua sobre a regra de negócio de aplicar o cupom.
Pensando na lógica de criação, como é aqui que a compra é criada, faz sentido manipular o objeto, mas fico imaginando que a aplicação do cupom poderia estar relacionada a própria criação da compra, já que nessa implementação a compra é criada em único passo (recebe os dados e monta a compra).
Não seria mais interresante que a regra de aplicar cupom estivesse em outro ponto do código?
O form além da responsabilidade de proteger a borda externa, também atua sobre a regra de negócio de aplicar o cupom.
Pensando na lógica de criação, como é aqui que a compra é criada, faz sentido manipular o objeto, mas fico imaginando que a aplicação do cupom poderia estar relacionada a própria criação da compra, já que nessa implementação a compra é criada em único passo (recebe os dados e monta a compra).
https://github.com/gustavoprimolan/jornada-dev-eficiente/blob/f180a8120db29d36d658f650c7113f147b2f2a74/casadocodigo/src/main/java/br/com/casadocodigo/forms/PurchaseForm.java#L45-L54