Como outros já mencionaram: não crie uma função com um nome que seja semelhante ao de uma biblioteca interna, biblioteca padrão ou função geralmente usada, mas mude seu comportamento. É possível se acostumar a uma convenção de nomenclatura mesmo que não faça muito sentido para você à primeira vista, mas será impossível raciocinar sobre o funcionamento do seu código quando você introduzir essas outras funções que fazem a mesma coisa, mas têm seus nomes trocaram.
Em vez de "sobrecarregar" os nomes usados pela biblioteca padrão, use novos nomes que transmitam exatamente o que você quer dizer. No seu caso, você não está realmente interessado em um "mínimo". Em vez disso, você quer limitar um valor. Matematicamente, esta é a mesma operação, mas semanticamente, não é bem assim. Então, porque não apenas uma função
int cap(int value, int limit) { return (value > limit) ? limit : value; }
que faz o que é necessário e diz de seu nome. (Você também pode implementar cap
em termos de min
, conforme mostrado em timster 's answer ).
Outro nome de função freqüentemente usado é clamp
. São necessários três argumentos e “grampeiam” um valor fornecido no intervalo definido pelos outros dois valores.
int clamp(int value, int lower, int upper) {
assert(lower <= upper); // precondition check
if (value < lower) return lower;
else if (value > upper) return upper;
else return value;
}
Se você estiver usando um nome de função tão geralmente conhecido, qualquer nova pessoa se juntando à sua equipe (incluindo o futuro voltando ao código depois de um tempo) entenderá rapidamente o que está acontecendo em vez de xingá-lo por tê-lo confundido quebrando suas expectativas sobre nomes de funções que eles achavam que sabiam.