static void Custom_Setting_To_InitStc(uint8_t u8Key_Function) { switch(u8Key_Function) { case WHITEBALANCE: Key_WhiteBalance(); break; case IMAGEFREEZE: Key_ImageFreeze(); break; case ZOOM_IN: Key_ZoomIn(); break; case ZOOM_OUT: Key_ZoomOut(); break; case PHOTO: Key_Photo(); break; case VIDEO: Key_Video(); break; default: break; } } void Dealwith_Key(void) { AD_KeyPolling(); //check AD conversion result switch(GetKey()) // Get the logical key, and implement the functions { case KEY_ZOOM_OUT: Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Top_ShortRelease); break; case KEY_MENU: //top key middle press Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Top_MiddlePress); break; case KEY_LEFT_SHORT: //left key release Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Left_ShortRelease); break; case KEY_RECORD: //left key middle press Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Left_MiddlePress); break; case KEY_ZOOM_IN: //down key release Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Down_ShortRelease); break; case KEY_AWB: //down key middle press Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Down_MiddlePress); break; case KEY_PHOTO: //right key release Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Right_ShortRelease); break; case KEY_FREEZE: //right key middle press Custom_Setting_To_InitStc(g_stcSetting.stcPanelSetting.stcCustomSetting.u8Right_MiddlePress); break; default: break; } }优化这段代码
时间: 2024-03-29 16:40:16 浏览: 14
这段代码可以进行如下的优化:
1. 可以将各个按键的处理函数的名称修改为更加具有描述性的名称,例如 `Process_WhiteBalance()`、`Process_ImageFreeze()` 等。
2. 可以将 `Custom_Setting_To_InitStc()` 函数和 `Dealwith_Key()` 函数中的 `g_stcSetting.stcPanelSetting.stcCustomSetting` 的部分提取出来,避免重复代码。例如:
```
const PanelCustomSetting_t& customSetting = g_stcSetting.stcPanelSetting.stcCustomSetting;
switch(u8Key_Function)
{
case WHITEBALANCE:
Process_WhiteBalance(customSetting.u8Top_ShortRelease);
break;
case IMAGEFREEZE:
Process_ImageFreeze(customSetting.u8Top_MiddlePress);
break;
case ZOOM_IN:
Process_ZoomIn(customSetting.u8Down_ShortRelease);
break;
case ZOOM_OUT:
Process_ZoomOut(customSetting.u8Top_ShortRelease);
break;
case PHOTO:
Process_Photo(customSetting.u8Right_ShortRelease);
break;
case VIDEO:
Process_Video();
break;
default:
break;
}
```
```
AD_KeyPolling(); //check AD conversion result
switch(GetKey()) // Get the logical key, and implement the functions
{
case KEY_ZOOM_OUT:
Process_ZoomOut(customSetting.u8Top_ShortRelease);
break;
case KEY_MENU: //top key middle press
Process_Menu(customSetting.u8Top_MiddlePress);
break;
case KEY_LEFT_SHORT: //left key release
Process_LeftShort(customSetting.u8Left_ShortRelease);
break;
case KEY_RECORD: //left key middle press
Process_Record(customSetting.u8Left_MiddlePress);
break;
case KEY_ZOOM_IN: //down key release
Process_ZoomIn(customSetting.u8Down_ShortRelease);
break;
case KEY_AWB: //down key middle press
Process_AWB(customSetting.u8Down_MiddlePress);
break;
case KEY_PHOTO: //right key release
Process_Photo(customSetting.u8Right_ShortRelease);
break;
case KEY_FREEZE: //right key middle press
Process_Freeze(customSetting.u8Right_MiddlePress);
break;
default:
break;
}
```
3. 可以将不同的按键处理函数分别定义在不同的文件中,避免一个文件变得过于庞大,提高可读性和可维护性。
4. 可以将 `AD_KeyPolling()` 放在 `Dealwith_Key()` 函数的开头,而不是在 `switch` 语句中的每个 `case` 块中分别调用,这样可以避免重复代码。
```
void Dealwith_Key(void)
{
AD_KeyPolling(); //check AD conversion result
const PanelCustomSetting_t& customSetting = g_stcSetting.stcPanelSetting.stcCustomSetting;
switch(GetKey()) // Get the logical key, and implement the functions
{
case KEY_ZOOM_OUT:
Process_ZoomOut(customSetting.u8Top_ShortRelease);
break;
case KEY_MENU: //top key middle press
Process_Menu(customSetting.u8Top_MiddlePress);
break;
case KEY_LEFT_SHORT: //left key release
Process_LeftShort(customSetting.u8Left_ShortRelease);
break;
case KEY_RECORD: //left key middle press
Process_Record(customSetting.u8Left_MiddlePress);
break;
case KEY_ZOOM_IN: //down key release
Process_ZoomIn(customSetting.u8Down_ShortRelease);
break;
case KEY_AWB: //down key middle press
Process_AWB(customSetting.u8Down_MiddlePress);
break;
case KEY_PHOTO: //right key release
Process_Photo(customSetting.u8Right_ShortRelease);
break;
case KEY_FREEZE: //right key middle press
Process_Freeze(customSetting.u8Right_MiddlePress);
break;
default:
break;
}
}
```