Mi confondo con le funzioni minime e massime, in determinati contesti.
In un contesto, quando si utilizzano le funzioni per prendere il maggiore o il minore tra due valori, non vi è alcun problema. Ad esempio,
//how many autographed CD's can I give out?
int howManyAutographs(int CDs, int Cases, int Pens)
{
//if no pens, then I cannot sign any autographs
if (Pens == 0)
return 0;
//I cannot give away a CD without a case or a case without a CD
return min(CDs, Cases);
}
Facile. Ma in un altro contesto, mi confondo. Se sto cercando di impostare un massimo o un minimo, lo faccio tornare indietro.
//return the sum, with a maximum of 255
int cappedSumWRONG(int x, int y)
{
return max(x + y, 255); //nope, this is wrong
}
//return the sum, with a maximum of 255
int cappedSumCORRECT(int x, int y)
{
return min(x + y, 255); //much better, but counter-intuitive to my mind
}
È sconsigliabile creare le mie funzioni come segue?
//return x, with a maximum of max
int maximize(int x, int max)
{
return min(x, max);
}
//return x, with a minimum of min
int minimize(int x, int min)
{
return max(x, min)
}
Ovviamente, usare i builtin sarà più veloce ma mi sembra una microottimizzazione inutile. C'è qualche altra ragione per cui sarebbe sconsigliabile? Che ne dici di un progetto di gruppo?