0

我正在尝试找出如何正确使用 ncurses。我想创建几个菜单,例如,每个菜单都会指向另一个菜单。

我是否应该制作一个菜单模板,然后将参数添加到通用菜单的函数中,该函数将选择哪个菜单选项/选择数组的大小/它将导致的位置(使用 switch-case/if else)

gen_menu(1){...if (choice==1){gen_menu(2);}...}

或者

为每个菜单创建一个不同的功能,然后从每个菜单调用该功能到另一个?

menu1(){...if (choice==1){menu2();}...}
4

1 回答 1

0

答案是无处不在的“视情况而定”;两种设计都可以或多或少地干净地工作。但是,总的来说,我认为第二个组织比第一个更好。

如果您使用数据驱动的菜单,则每个菜单都需要一个适度精细的数据结构。如果数据来自文件(想想 I18N/L10N — 国际化/本地化),那么每个菜单和每个菜单中的每个项目都需要适当定义。这可能会导致很多幕后代码。对于简单的菜单(没有 I18N),您最终可能会为每个菜单得到一个适度复杂的数据结构。您可以在文件级别(静态变量)或函数级别定义它们。您的gen_menu()设计看起来将与单个功能可用的所有菜单结构一起运行。您的menu1()设计允许根据菜单功能定义菜单结构。

如果菜单不是数据驱动的(例如,如果您有一个单独的 switch 语句来处理每个菜单的操作),那么您应该为每个菜单提供一个单独的函数。如果没有别的,函数大小约束应该表明这一点。数百行长的函数并不好。

于 2013-10-29T15:13:37.823 回答