布尔标志虚假可持续性

本文关键字:可持续性 标志 布尔 | 更新日期: 2023-09-27 18:20:47

我有一种导入CSV文件的情况。

它可能有未知数量的列(我已经考虑过了)。

但是,当我验证列时,行验证似乎会在处理任何新行时重置,这会导致最终进程执行,如果一行无效,整个进程就会失败。

工艺设计:

bool valid = true;
for (i = 0; i < rows.length; i++){
...
  bool rowValid = true;
  ...
  for(colIndex = 0; colIndex < columns.length; colIndex++) {
    //Example of a validator
    if (string.IsNullOrWhiteSpace(columns[colIndex])){
      rowValid |= false;
    } else {
      //Save value
    }
  }
  
  if(rowValid){
    //Process some more
  } else {
    //Store information for Invalid Values reporting
  }
  valid |= rowValid
}
if(valid){
  //Save all information imported
} else {
  //Show Invalid values and abort save operations
}

当我故意注入无效值以验证是否通过了false时,为什么会导致valid = true?有什么建议吗?

布尔标志虚假可持续性

首先,

rowValid |= false;

什么都不做。你可能应该使用

rowValid = false;

其次,

valid |= rowValid

应该是

valid &= rowValid

第三,如果有一件事无效,那么你希望整个事情都无效,如果检测到错误,你可能会提前返回。

valid |= rowValid行应改为valid &= rowValid