Должен ли я использовать возвращаемые функции, когда возвращаемое значение не требуется? - PullRequest
0 голосов
/ 02 мая 2011

У меня есть функция, которая выглядит следующим образом:

int Game::GetInput() {
    while (true) {
        // do stuff
        if (something) {
            // do this
            return 0;
        }

        else {
            // do other stuff
        }
    }
}

Мне интересно, является ли обычным или правильным иметь возвращающую функцию, а не функцию void, с единственной целью оставитьфункция (возвращаемое значение не будет делать ничего в программе, кроме завершения функции).Это хорошая практика или есть лучший способ завершить функцию?

Ответы [ 4 ]

3 голосов
/ 02 мая 2011

Нет проблем с пустыми функциями.Если он не возвращает ничего полезного, он должен быть недействительным.

1 голос
/ 02 мая 2011

Вы можете легко использовать return; без параметров для выхода из функции void.Ваш код выше станет:

void Game::GetInput() {
    while (true) {
        // do stuff
        if (something) {
            // do this
            return;
        }

        else {
            // do other stuff
        }
    }
}
1 голос
/ 02 мая 2011

Просто сделайте свою функцию void, и просто return?

// vv void return type
void Game::GetInput() {
    while (true) {
        // do stuff
        if (something) {
            // do this
            return;  // <<<< No return value
        }

        else {
            // do other stuff
        }
    }
}
0 голосов
/ 02 мая 2011

Если нет полезного значения для функции, которую нужно возвращать, лучше не возвращать значение - потому что вызывающий код должен проверить возвращаемое значение.

Ваш код может быть вдвойне упрощен:

void Game::GetInput() {
    while (true) {
        // do stuff
        if (something) {
            // do this
            return;
        }
        // do other stuff
    }
}

else не требуется; единственный способ выполнить «делать другие вещи» - это если something равно false.

...