DEV Community

Francisco Zanfranceschi
Francisco Zanfranceschi

Posted on • Updated on

[Conceito] - Idempotência

Conteúdo original nessa thread to twitter.


Se sua mãe te mandasse tomar banho mais de uma vez, vc ia mesmo tendo acabado de tomar?

Não né?

Então pq suas aplicações não são idempotentes? Ou são?

Dá uma olhada aqui pra alguns exemplos simples.

👇

Processamento de arquivos:

Colocar o mesmo arquivo pra processar mais de uma vez, sem cagar tudo (duplicar coisas, por exemplo). A idempotência pode ser do arquivo como um todo ou linha a linha.


Banco de dados:

UPDATE saldo SET valor = 200 WHERE valor = 100 and id = 1;

Assim você garante que o saldo vai sair do estado que você sabia pra outro estado também conhecido. Se 'valor' mudou no meio do caminho, não vai dar ruim.


Processamentos de mensagens (APIs HTTP, mensagens de filas, etc.)

Isso pode ser mais chato, mas você pode exigir uma identificação de correlação (correlation id) de quem produz a mensagem ou faz a chamada.

Faz um exercício mental de como evitar um pagamento duplicado, p. ex.


Agora aquela parte que eu sei que você curte: decorar coisas buzinísticas pra arrasar nas festas.

Mostra isso pros amigos, ó:

f(x) = f(f(x))

10 * 1 = 10

34 + 0 = 34
Enter fullscreen mode Exit fullscreen mode

Tudo isso aí são exemplos de idempotência na matemática (* 1, + 0).

Inventa uma cantada com isso, inventa. 💙


"Acabei de observar uma propriedade idempotente em ti, ó! bela mulher: sua beleza somada ao tempo, continua apenas sua beleza! Este – que é tão imperdoável – nada lhe afeta."

(Sério, eu não falaria isso. Sei lá, talvez bêbado.)

Discussion (0)