pierwsze składnia
else (a == '/')
return a/b;
jest tak, powinny być
else if (a == '/')
return a/b;
drugie, dany parametr a
może jedynie 4 wartości dyskretnych tak dobrą praktyką jest stosowanie wyliczenie, np
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;
}
co zapewnia, że użytkownik Compute
będzie stosować tylko jeden z tych czterech wartości dla funkcjonowania (a
) parametru.
Prawdopodobnie nie użyłem najlepszych praktyk w moim przykładzie, więc polecam przeczytać this answer po więcej szczegółów.
Wreszcie można uczynić kod bardziej zwięzłe za pomocą instrukcji 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;
}
}
Myślę, że odpowiedź brzmi NIE. – Sahi
co masz na myśli mówiąc "wygodniej"? –
Możliwy duplikat [czy istnieje sposób przekonwertowania operatora jako znaku "+" na rzeczywisty operator dla arytmetycznych?] (Http://stackoverflow.com/questions/19242330/is-there-a-way-i -can-convert-an-operator-as-a-char-to-the-actual-operator) – Henrik