用函数指针代替switch-case


static void ShowMenu(E_MENU_INDEX eIndex); ///< 显示指定的菜单
static void ShowMenu_main(); ///< 显示主菜单
static void ShowMenu_rec_add(); ///< 显示菜单-添加数据

static void ShowMenu_rec_del(); ///< 显示菜单-删除数据
static void ShowMenu_rec_del_by_index(); ///< 显示菜单-按照索引删除
static void ShowMenu_rec_del_by_content(); ///< 显示菜单-按照内容删除

static void ShowMenu_rec_modify(); ///< 显示菜单-修改数据

static void ShowMenu_rec_query(); ///< 显示菜单-查询
static void ShowMenu_rec_query_by_index(); ///< 显示菜单-按照记录索引查询
static void ShowMenu_rec_query_by_content(); ///< 显示菜单-按照记录内存查询

static void ShowMenu_StatisticsUsage(); ///< 显示菜单-字符使用率统计
static void ShowMenu_Defragmentation(); ///< 显示菜单-碎片整理
static void ShowMenu_DispDiskUsage(); ///< 显示菜单-内存数据库使用率

typedef void (*PFN_SHOWMENU_X)();


PFN_SHOWMENU_X g_fnProcMenu[] = 
{
	ShowMenu_main, 
	ShowMenu_rec_add,
	ShowMenu_rec_del,
	ShowMenu_rec_modify,
	ShowMenu_rec_query,
	ShowMenu_StatisticsUsage,
	ShowMenu_DispDiskUsage,
	ShowMenu_Defragmentation
};

static void ShowMenu(E_MENU_INDEX eIndex)
{
    CleanScreen();

	/// 用函数指针代替switch-case, 简化逻辑处理
	/// 这里原来是一小撮switch-case
	/// 这里用函数指针代替,也简洁一些
	/// 如果switchcase比较多, 用函数指针的效果就更好
	if (NULL != g_fnProcMenu[eIndex])
	{
		g_fnProcMenu[eIndex]();

		if (eMenuIndex_Defragmentation == eIndex)
		{
			ShowMenu_DispDiskUsage(); ///< 碎片整理完成后, 分析磁盘使用率
		}
	}
	else
	{
		g_fnProcMenu[eMenuIndex_main]();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值