Исходный код
bool MyProc::CompareModule(int *operand1, int *operand2, int n) {
for (int i = 1; i < n; i++) {
if (operand1[i] != operand2[i]) {
if (operand1[i] < operand2[i])
return false;
else
return true;
};
};
return true;
};
Что не так в исходном коде
Странным выглядит то, что сравнение элементов массива начинается на с первого элемента под номером 0, а со второго под номером 1.
Неудачно назван как метод, так и его параметры: название метода упоминает про какой-то модуль, а в методе выполняется поэлементное сравнение целочисленных массивов.
Название параметра operand*
является максимально общим, не отражающим своей сути. А суть заключается в том, что операндом является массив. Это как раз один из крайне редких случаев, когда название array
наилучшим образом подходит для называния параметра метода.
Название параметра n
не значит вообще ничего, тогда как по смыслу там находится размер массива.
И наконец, ветвление, в котором одна ветка возвращает «истину», а другая «ложь», является избыточным.
Вариант рефакторинга
bool MyProc::isArrayGreaterOrEqual(int *array1, int *array2, int array_length) {
for (int i = 0; i < array_length; i++) {
if (array1[i] != array2[i]) {
return array1[i] > array2[i];
}
}
return true;
}