Em Limpar código , Robert Martin argumenta que, mesmo com a tipagem estática, você deve evitar o que ele chama de "punição", o que significa dar o mesmo nome a dois métodos que não são semanticamente semelhantes. Isso significa que, se você considerar que transaction.rollback
e changeset.rollback
são semanticamente diferentes, tente escolher outro nome para um deles, independentemente de estar praticando ou não uma tipagem de pato.
Em seu exemplo específico, o nome torna a semântica de cada caso óbvia, mesmo que o contexto seja diferente, portanto, não há problema em deixar o nome igual. Você está preocupado principalmente em evitar a passagem acidental de um tipo de objeto para um contexto destinado ao outro.
Para ser franco, esse é o trade-off que você faz ao escolher a digitação de pato. Você aumenta o risco de usar o tipo errado, o que requer um pouco mais de testes, mas em troca você ganha mais reutilização com menos problemas. Se você deseja os benefícios da strong tipagem estática, escolha seu idioma e arquitetura de acordo. Você não pode ter seu bolo e comê-lo também.