优化这段代码 if (draw == k+1) { if( k == 0 ) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<8) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else if( k == 1 ) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<9) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else if( k == 2 || k == 7 || k == 18 ) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<2) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else if( k == 6 || k == 8 ) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<2) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else if( k == 3 || k == 13 || k == 14 || k == 16 || k == 20 || k == 21 ) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<1) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else if( k == 15 || k == 17) { if (gRunPara.COMMS_SerialInfo[serialid][k].val<2) ++gRunPara.COMMS_SerialInfo[serialid][k].val; change = 1; } else change = Lcd_Modify_Param(LCD_KEY_ADD,ALTER_SERI,UNIT_PUBLIC_MX6,serialid,k,j); }
时间: 2024-01-30 22:01:35 浏览: 51
可以将每个 if 语句块中的代码提取出来,统一处理。例如,可以为每个 k 值设置不同的阈值,然后使用一个循环对所有 k 值进行遍历并检查是否需要增加 gRunPara.COMMS_SerialInfo[serialid][k].val 的值。这样可以显著减少代码重复,并提高可读性和可维护性。
下面是一个可能的重构示例:
```
int thresholds[] = {8, 9, 2, -1, -1, -1, 2, 2, -1, 1, -1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1};
for (int i = 0; i < 22; i++) {
if (draw == k + 1 && thresholds[i] != -1 && k == i) {
if (gRunPara.COMMS_SerialInfo[serialid][k].val < thresholds[i]) {
++gRunPara.COMMS_SerialInfo[serialid][k].val;
change = 1;
}
} else if (draw == k + 1 && thresholds[i] == -1 && k == i) {
change = Lcd_Modify_Param(LCD_KEY_ADD, ALTER_SERI, UNIT_PUBLIC_MX6, serialid, k, j);
}
}
```
在这个重构示例中,我们使用了一个名为 `thresholds` 的整数数组来存储每个 k 值所需增加的阈值。如果阈值为 -1,则表示需要调用 Lcd_Modify_Param 函数。然后,我们使用一个 for 循环对所有 k 值进行遍历,并根据需要更新 gRunPara.COMMS_SerialInfo[serialid][k].val 的值或调用 Lcd_Modify_Param 函数。
阅读全文