Tema
Combinando parâmetros
O valor de um parâmetro pode ser uma conta com outros parâmetros, em vez de um número fixo.
BASE = 2
DOBRO = BASE * 2 → vale 4Quando BASE muda, DOBRO acompanha.
Quando isso ajuda
Relações que precisam se manter
Quando um número é sempre uma proporção de outro, escrever a relação evita que os dois saiam de sincronia:
TEMPO_TOTAL = 10
TEMPO_DE_ESPERA = TEMPO_TOTAL * 0.3
TEMPO_DE_ENVIO = TEMPO_TOTAL * 0.7Variando TEMPO_TOTAL numa varredura, as duas partes acompanham na proporção certa. Com os valores soltos, seria preciso lembrar de ajustar os três — e a soma silenciosamente deixaria de fechar.
Converter unidade uma vez só
Se uma medição veio em outra unidade, faça a conversão no parâmetro em vez de espalhá-la pelo modelo:
TEMPO_EM_MINUTOS = 90
TEMPO_EM_SEGUNDOS = TEMPO_EM_MINUTOS * 60Deixar a intenção visível
CAPACIDADE_TOTAL = 100
MARGEM_DE_RESERVA = CAPACIDADE_TOTAL * 0.2
CAPACIDADE_UTIL = CAPACIDADE_TOTAL - MARGEM_DE_RESERVAQuem lê entende a regra. Com 80 digitado direto, entende só o número.
O que dá para escrever
As quatro operações, parênteses, e nomes de outros parâmetros:
A + B
A * 1.5
(A + B) / 2
A - B * 0.1Só outros parâmetros
Um parâmetro não pode usar a quantidade de fichas de um lugar. Parâmetros são valores fixos, definidos antes de a simulação começar; a quantidade num lugar muda o tempo todo.
Se você precisa de um número que depende do estado do sistema, isso é uma métrica, não um parâmetro.
Referência circular
Dois parâmetros não podem depender um do outro:
X = Y
Y = X ← não funcionaA execução para com uma mensagem sobre dependência circular. O conserto é decidir qual dos dois é o valor de base e escrever o outro em função dele.
Quando não vale a pena
Se a conta ficou difícil de acompanhar, prefira valores separados. O objetivo é tornar a relação visível, e uma cadeia de cinco parâmetros calculados uns a partir dos outros faz o contrário — ninguém consegue prever o efeito de mudar o primeiro.
Uma boa medida: se você precisa fazer a conta no papel para saber quanto um parâmetro vale, ele está complicado demais.