标题有点绕,解释下。
比如现在有20台机器,每台机器的功能有:重启,关机,数据显示,设置电压,导出数据,获取日志等。
现在的问题是,每个功能都分部分机器执行和全部机器执行,我在写代码的时候,有时候会写了全部执行的,却忘了改部分执行的。
今天突然想到了模板,在代码块高度类似的条件下,可不可以用模板或者类似的可以达到一套代码,多地复用,避免遗漏的目的呢?
界面用的mfc里,我贴一小段代码
// 导出机器信息
void ExportDevInfo()
{
// 1 CFileDialog类创建并打开csv文件
// 2 设置csv文件的表头的列名(首行的字段)
// 2.2 开始导出信息,此处动作分全部执行和部分执行
2.2.1 全部导出
pos = gDlgPtr->gDevList.GetFirstSelectedItemPossition();
if(pos == NULL) // pos为空表示未选
{
//不选中,设置为对全部机器执行
//获取总机器设备数目
int totalDev= gDevList.GetItemCount();
// 对全部行的机器执行操作
{操作}
}
else //选中部分
{
while(pos)
{
//pos为行索引,不断向前移动
int item = gDevList.GetNextSelectedItem(pos);
// 对选中的机器进行操作
{操作}
}
}
}
{操作} 里的代码基本是一模一样的。
现在的问题是:
比如导出信息功能,函数的前面部分是创建打开一个文件,再分部分和全部执行
如果设置电压功能,函数前面区分部分和全部,然后再进行TCP连接机器
我的初衷是将这些针对两套操作的函数,合并在一个函数或者模板里。但是现在有点无从下手。
我看了同事的一个函数实现,是把执行部分的代码块封装成一个函数,然后在全部操作和部分操作的分支里调用。