Похоже, вы хотите Eval
строк и Scale
чисел.Вместо четырех явных случаев (которые стали бы восемью с тремя переменными), обрабатывайте каждый случай для x
и y
независимо:
if x is Number
Scale(x)
else
Eval(x)
if y is Number
Scale(y)
else
Eval(y)
Или, еще лучше, вы можете нажать Eval
/Scale
в служебный метод:
ScaleOrEval(z):
if z is Number
Scale(z)
else
Eval(z)
... и затем используйте его ...
ScaleOrEval(x)
ScaleOrEval(y)
Если вы выберете правильные имена методов, то создание вспомогательного метода сделаеткод более читабелен и помогает избежать повторений копирования и вставки.