Возврат булевого значения из функции сравнения массивов чисел


Исходный код

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;
}