c# - 如何使大型 if 语句更具可读性

标签 c# if-statement

在代码清晰度方面,是否有比大型 IF 语句更好的方式来编写具有大量 AND 检查的条件?

例如,如果其他字段不满足某些要求,我目前需要在屏幕上强制显示一个字段。目前我有一个运行超过 30 LOC 的 IF 语句,这似乎不对。

if(!(field1 == field2 &&
     field3 == field4 &&
     field5 == field6 &&
     .
     .
     .
     field100 == field101))
{
   // Perform operations
}

解决方案是否只是将它们分解成更小的 block 并将结果分配给更少数量的 bool 变量?使代码更具可读性的最佳方法是什么?

谢谢

最佳答案

我会考虑以谓词形式建立规则:

bool FieldIsValid() { // condition }
bool SomethingElseHappened() { // condition }
// etc

然后,我会为自己创建一个包含这些谓词的列表:

IList<Func<bool>> validConditions = new List<Func<bool>> {
  FieldIsValid,
  SomethingElseHappend,
  // etc
};

最后写条件提出条件:

if(validConditions.All(c => c())
{
  // Perform operations
}

关于c# - 如何使大型 if 语句更具可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310171/

相关文章:

c# - Showing MDI Child - 一个只在屏幕上出现一毫秒可见的随机形式

c# - 从后面的代码访问 formView 页脚模板内的 userControl

python - python3中有没有办法检查不止一件事?

Java - 圈和叉/井字棋游戏获胜算法不起作用

mysql - 帮助 MySQL Procedure Nested IF ELSE statements

c# - CopyToAsync 与 ReadAsStreamAsync 的巨大请求负载

c# - 如何在 asp.net webforms 中正确实现 PRG 模式

c# - 只读一次文件的下一行

android - bool 逻辑语法和MYSQL语法问题

php - 如果条件不起作用则嵌套