在一个程序中处理多个函数时。如何最好地处理他们的逻辑?

When dealing with multiple functions in a program. How is it best to deal with their logic?

我目前正在研究如何在我的程序中正确实现多个功能,我认为我的想法是正确的,但我只是想澄清一下。

将某些逻辑放入特定函数时,我应该处理该函数的最终结果还是将其返回到我的 "main function"?我知道这可能是一个模棱两可的问题,所以我在这里发布了我的代码来尝试帮助解决问题。

该程序只是将一个字符串添加到向量中,但我想知道处理它的最佳方法是什么。

非常感谢您。

计划 1.

std::vector<std::string> favouriteGames; //Stores favourite games


int menu = 0; //Menu navigation
std::cout << "1: Add Game. 2: Remove Game. 3: List Games. 4: Exit.";
std::cin >> menu;

//Menu
switch (menu)
{
case 1:
    favouriteGames.push_back(AddGame());
    break;

case 2:
    //favouriteGames.erase(RemoveGame);
    break;

case 3:
    //ListGames();
    break;

case 4:
    break;

default:
    std::cout << "Please enter correct data.";
}

//Add game
std::string AddGame()
{
    std::string gameName;

    int menu = 0;
    std::cout << "Enter name of game you wish to add.";
    std::cin >> gameName;

    return gameName;
}

节目二。 或者当函数只处理数据而不 return 任何东西时像这样。

void AddGame(std::vector<std::string> favouriteGames);

int main()
{
    std::vector<std::string> favouriteGames; //Stores favourite games


    int menu = 0; //Menu navigation
    std::cout << "1: Add Game. 2: Remove Game. 3: List Games. 4: Exit.";
    std::cin >> menu;

    //Menu
    switch (menu)
    {
    case 1:
        AddGame(favouriteGames);
        break;

    case 2:
        //favouriteGames.erase(RemoveGame);
        break;

    case 3:
        //ListGames();
        break;

    case 4:
        break;

    default:
        std::cout << "Please enter correct data.";
    }

    //Keep Window open
    std::string barn;
    std::cin >> barn;

    return 0;
}

//Add game
void AddGame(std::vector<std::string> favouriteGames)
{
    std::string gameName;

    int menu = 0;
    std::cout << "Enter name of game you wish to add.";
    std::cin >> gameName;

    favouriteGames.push_back(gameName);
}

计划一

一般来说,您的函数应该一个工作。它使它们可以重复使用,并有助于保持您的界面清洁和稳定。

在这种情况下,这意味着您的函数实际上命名错误。它应该类似于 requestGameName().

然后您还可以将 .push_back 集成到它自己的第二个函数中(addGame()?),尽管这在您的初始版本中可能有点矫枉过正。不过,总有一天,添加游戏可能会涉及更多代码行,这会触发您将所有这些代码移动到另一个函数中。