In primo luogo, la sintassi
else (a == '/')
return a/b;
è sbagliato, e dovrebbe essere
else if (a == '/')
return a/b;
secondo luogo, il parametro a
può avvenire solo 4 valori discreti, così buona pratica è quello di utilizzare un'enumerazione, ad esempio
enum Operation
{
kAddition,
kSubtraction,
kMultiplication,
kDivision
};
int Compute(Operation a, int a, int b)
{
if (a == kAddition)
return a+b;
else if (a == kSubtraction)
return a-b;
else if (a == kMultiplication)
return a*b;
else if (a == kDivision)
return a/b;
}
che assicura che l'utente del Compute
utilizza solo uno di questi quattro valori per l'operazione (a
) parametro.
Probabilmente non ho utilizzato le migliori pratiche nel mio esempio, quindi vi consiglio di leggere this answer per maggiori dettagli.
Infine si potrebbe rendere il codice più conciso utilizzando un'istruzione switch:
enum Operation
{
kAddition,
kSubtraction,
kMultiplication,
kDivision
};
int Compute(Operation a, int a, int b)
{
switch (a)
{
case kAddition:
return a+b;
case kSubtraction:
return a-b;
case kMultiplication:
return a*b;
case kDivision:
return a/b;
}
}
Penso che la risposta è NO. – Sahi
cosa intendi con 'più conveniente'? –
Possibile duplicato di [esiste un modo per convertire un operatore come carattere "+" nell'operatore effettivo per l'aritmetica?] (Http://stackoverflow.com/questions/19242330/is-there-a-way-i -can-convert-an-operator-as-a-char-in-the-actual-operator) – Henrik