c# - 在许多条件下编写 return 语句的正确方法

标签 c# coding-style return

我想知道是否有一种很好的编码方式:

return IOTools.CreateFile(@"D:\test")
    && IOTools.CreateDir(@"D:\test_folder\")
    && IOTools.DeleteFile(@"D:\test_file_2")
    && IOTools.DeleteDir(@"D:\test_folder_2\");

我知道我可以把它全部放在其他函数中,并在每个条件后使用 if 语句返回 false,但也许还有另一种方法可以阻止程序在条件为 false 时尝试执行下一个条件?

最佳答案

&&已经是 short-circuiting运算符(operator)。因此,一旦一个条件为 false,它就会停止。

if x is false, y is not evaluated, because the result of the AND operation is false no matter what the value of y is. This is known as "short-circuit" evaluation.

顺便说一句,|| 也会在一个条件为 true 时立即停止评估。

如果您要求更易读的方式,您可以使用变量:

bool canCreateFile = IOTools.CreateFile(@"D:\test");
bool canCreateDir = IOTools.CreateDir(@"D:\test_folder\");
bool canDeleteFile = IOTools.DeleteFile(@"D:\test_file_2");
bool canDeleteDir = IOTools.DeleteDir(@"D:\test_folder_2\");

return canCreateFile && canCreateDir && canDeleteFile  && canDeleteDir; 

如果代码变得太复杂,我会使用变量来提高可读性、可维护性和可测试性。

关于c# - 在许多条件下编写 return 语句的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042393/

相关文章:

ruby-on-rails - Ruby on rails 命名日期/时间字段的约定

coding-style - 应该如何注释 if-else 结构?

sql - 在sql中运行累积返回

c# - 使用 C# 在 Windows 10 上控制左右扬声器平衡级别

c# - HttpWebRequest 中缺少属性

android - 在 Android 中使用默认字体样式

c++ - 公共(public)成员函数返回内部类?

ios - 从 Objective-C 的 void 中获取值

c# - 在 C# 中访问 F# 可区分联合类型的数据的最简单方法是什么?

c# - 与 SQL Server 中的安全数据库建立安全连接