Я пишу программу 2048 для терминала для университета.
Чтобы играть в игру, моя программа должна сдвигаться влево, вправо, вверх или вниз. Итак, у меня есть два варианта:
Напишите функцию, которая принимает направление в качестве параметра, а затем
действует соответственно через операторы if.
void move(string direction) {
if (direction == "up")
//do stuff
if (direction == "left")
//do stuff
//etc.
}
Напишите четыре функции, одну для вверх, вниз, влево и вправо, и поместите операторы main()
,
int main() {
cin << direction;
if (direction == up)
moveup();
//etc.
}
Я прочитал руководство по стилю Google cpp, в котором говорится, что в идеале функции должны быть короткими. Но если я напишу четыре функции, у меня также будет много повторяющегося кода. На данный момент я использовал вариант 1 и мой move()
функция длиной 70 строк.
Что считается лучшей практикой?
Второй вариант, как правило, считается лучшим. Я не понимаю, почему вы бы повторили код, поскольку то, что делает Move-Left (например), вероятно, будет отличаться от того, что делает Move-Up. И если там является Повторите код, поместите этот код в еще одну функцию и вызовите ее из ваших функций перемещения. В общем, начинающие программисты не пишут достаточно функций — их слишком сложно иметь слишком много.
Является ли хорошей практикой помещать операторы if в main () или в функции для ответа на ввод пользователя?
Оба варианта хороши. Последний вариант позволяет повторно использовать функциональность, и я рекомендую его, если у вас есть повторяющиеся шаблоны в основной функции.
Но если я напишу четыре функции, у меня также будет много повторяющегося кода.
Решение состоит в том, чтобы ввести пятую функцию, которая содержит части, которые являются общими для других функций. Затем вызовите эту функцию от других. Это то, для чего предназначены функции: разбиение многоразовой функциональности.