我试图找出如何正确使用ncurses。 我想创建几个菜单,每个菜单将导致另一个菜单。
我应该制作菜单的模板,然后将参数添加到通用菜单的功能中,该功能将选择选择阵列的哪个菜单选项/大小/它将导致的位置(使用switch-case / if else)
gen_menu(1){...if (choice==1){gen_menu(2);}...}
或
为每个菜单创建一个不同的功能,然后从每个菜单调用该功能到另一个菜单?
menu1(){...if (choice==1){menu2();}...}
答案 0 :(得分:0)
答案是无处不在的“它取决于”;两种设计都可以或多或少地干净利落地工作。但是,总的来说,我认为第二个组织比第一个组织好。
如果您使用数据驱动菜单,则每个菜单都需要一个中等复杂的数据结构。如果数据来自文件(想想I18N / L10N - 国际化/本地化),那么每个菜单和每个菜单中的每个项目都需要进行适当的定义。这可能会在幕后产生大量代码。对于简单的菜单(没有I18N),您可能最终会为每个菜单提供适度精细的数据结构。您可以在文件级别(静态变量)或功能级别定义它们。您的gen_menu()
设计看起来会与单个函数可用的所有菜单结构一起运行。您的menu1()
设计允许按菜单功能定义菜单结构。
如果菜单不是数据驱动的(例如,如果您有一个单独的switch语句来处理每个菜单的操作),那么每个菜单应该有一个单独的功能。函数大小约束应该表明,如果没有别的。数百行的功能并不好。