Я изучаю использование условий if-else
else-if
, и мне интересно, можно ли как-то упростить это утверждение ниже. Могу ли я объединить их все в одно заявление?
if (a < 0) {
a = 1;
}
if (b < 0) {
b = 1;
}
if (c < 0) {
c = 1;
}
Кажется невозможным объединить все упомянутые вами операторы if в один, поскольку a
, b
, c
все являются независимыми переменными. Однако, чтобы сделать ваш код более читабельным, вы можете воспользоваться методом.
например Реализуйте такой метод:
int processNegativeNumber(int num) {
if (num < 0) {
return 1;
}
return num;
}
Теперь вы можете назвать это так:
a = processNegativeNumber(a);
b = processNegativeNumber(b);
c = processNegativeNumber(c);
Я бы не назвал такой метод checkNumber
. Прежде всего, метод выполняет операцию. Checknumber не указывает на такое действие. Кроме того, значение один полностью отсутствует в уравнении. Принцип наименьшей неожиданности утрачен.
@MaartenBodewes Спасибо за беспокойство. processNegativeNumber()
или getValueForNegativeNumber()
=> Имеют ли смысл эти названия? Или, пожалуйста, не стесняйтесь изменить ответ в соответствии с передовой практикой, на ваш взгляд.
Да, первое кажется правильным, затем вы можете задокументировать, что оно возвращает 1. Это не полностью описательно, но в данном случае этого нельзя избежать.
Вы можете использовать тернарный оператор, чтобы сохранить некоторые символы :-)
a = a < 0 ? 1 : a;
b = b < 0 ? 1 : b;
c = c < 0 ? 1 : c;
Поскольку все переменные независимы друг от друга, вы не можете комбинировать операторы