版权声明:本文为博主原创文章,如有需要,请注明转载地址:http://blog.csdn.net/morixinguan。若是侵权用于商业用途,请联系博主,否则将追究责任 https://blog.csdn.net/morixinguan/article/details/85334123
一款好的电子产品,肯定少不了一个好的软件框架,首先我们来看下:
一般来说我们的产品都有按键,按键用来操作相应的界面,那就会有相应的界面处理方法,以下有两种结构的编写:
A类编写:
void left_key_process(int current_page)
{
switch(current_page)
{
case MAIN_PAGE:
//针对main_page的左键处理
main_page_left_key_process();
break ;
case SETTING_PAGE:
//针对setting_page的左键处理
setting_page_left_key_process();
break ;
case LOG_PAGE:
//针对log_page的左键处理
log_page_left_key_process();
break ;
case LANGUAGE_PAGE:
//针对language_page的左键处理
language_page_left_key_process();
break ;
....
}
}
void right_key_process(int current_page)
{
//....
}
void enter_key_process(int current_page)
{
//....
}
void UI_Page_Process(int KeyValue)
{
switch(KeyValue)
{
case LEFT_KEY :
left_key_process(KeyValue);
break ;
case RIGHT_KEY:
right_key_process(KeyValue);
break ;
case ENTER_KEY:
enter_key_process(KeyValue);
break ;
...
}
}
B类编写:
void main_page_process(int KeyValue)
{
switch(KeyValue)
{
case LEFT_KEY:
//针对main_page的左键处理
break ;
case RIGHT_KEY:
//针对main_page的右键处理
break ;
case ENTER_KEY:
//针对main_page的Enter键处理
break ;
case BACK_KEY:
//针对main_page的back键处理
break ;
...
}
}
void setting_page_process(int KeyValue)
{
switch(KeyValue)
{
case LEFT_KEY:
...
break ;
case RIGHT_KEY:
...
break ;
case ENTER_KEY:
...
break ;
case BACK_KEY:
...
break ;
...
}
}
void Log_page_process(int KeyValue)
{
switch(KeyValue)
{
case LEFT_KEY:
...
break ;
case RIGHT_KEY:
...
break ;
case ENTER_KEY:
...
break ;
case BACK_KEY:
...
break ;
...
}
}
void UI_Page_Process(int KeyValue)
{
switch(current_page)
{
case MAIN_PAGE:
main_page_process(KeyValue);
break ;
case SETTING_PAGE:
setting_page_process(KeyValue);
break ;
case LOG_PAGE:
Log_page_process(KeyValue);
break ;
....
}
}
A类编写,我可以起个名字叫直男式编写,逻辑没有错,也能正常操作相应的页面,没有问题,可它就是一条线,直! 首先拿到键值,然后操作界面,和我们正常人的思维差不多。但如果代码量剧增,页面众多,每个页面有不同的处理按键,相信A类的编写给后面的人来维护或者增加处理方法人一定会非常抱怨,为啥找个界面处理这么痛苦?
我们再来看看B类,我可以起个名字叫人机接口式编写。首先我们要操作界面,界面就是人机接口,每个不同的界面由对应的按键操作方法,这样看起来,是不是更好维护了?以后,我要往界面添加、删除等相关按键的处理方法,那是不是就更好找了?
如果有什么更好的应用框架,欢迎推荐,共同学习!