Является ли хорошей практикой помещать операторы if в main () или в функции для ответа на ввод пользователя?

Я пишу программу 2048 для терминала для университета.

Чтобы играть в игру, моя программа должна сдвигаться влево, вправо, вверх или вниз. Итак, у меня есть два варианта:

  1. Напишите функцию, которая принимает направление в качестве параметра, а затем
    действует соответственно через операторы if.

    void move(string direction) {
    if (direction == "up")
    //do stuff
    if (direction == "left")
    //do stuff
    //etc.
    }
    
  2. Напишите четыре функции, одну для вверх, вниз, влево и вправо, и поместите операторы main(),

    int main() {
    cin << direction;
    if (direction == up)
    moveup();
    //etc.
    }
    

Я прочитал руководство по стилю Google cpp, в котором говорится, что в идеале функции должны быть короткими. Но если я напишу четыре функции, у меня также будет много повторяющегося кода. На данный момент я использовал вариант 1 и мой move() функция длиной 70 строк.

Что считается лучшей практикой?

0

Решение

Второй вариант, как правило, считается лучшим. Я не понимаю, почему вы бы повторили код, поскольку то, что делает Move-Left (например), вероятно, будет отличаться от того, что делает Move-Up. И если там является Повторите код, поместите этот код в еще одну функцию и вызовите ее из ваших функций перемещения. В общем, начинающие программисты не пишут достаточно функций — их слишком сложно иметь слишком много.

2

Другие решения

Является ли хорошей практикой помещать операторы if в main () или в функции для ответа на ввод пользователя?

Оба варианта хороши. Последний вариант позволяет повторно использовать функциональность, и я рекомендую его, если у вас есть повторяющиеся шаблоны в основной функции.

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

Решение состоит в том, чтобы ввести пятую функцию, которая содержит части, которые являются общими для других функций. Затем вызовите эту функцию от других. Это то, для чего предназначены функции: разбиение многоразовой функциональности.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector