我正在使用Visual Studio 2013 Express,我是Visual C#的新手.我相信有更好的方法来做我正在尝试的事情,我将不胜感激任何建议.
我正在尝试编写的代码评估一系列测试,并且只有在所有测试都为TRUE时才设置标志.我目前正在使用六个嵌套if结构来完成这项工作,虽然它有效,但我正在寻找一种更清洁,更专业的解决方案.这是示例(此帖子缩短为三个级别):
private const string sDrive = "D:\\";
private const string sFolder = "FTP\\";
private const string sDivFolder = "ABC";
private static bool bSanity = false;
private static void SanityCheck()
{
if (Directory.Exists(sDrive))
{
if (Directory.Exists(sDrive + sFolder))
{
if (Directory.Exists(sDrive + sFolder + sDivFolder))
{
bSanity = true;
}
else
{
Console.WriteLine("FATAL: Div folder doesn't exist.");
}
}
else
{
Console.WriteLine("FATAL: Root folder doesn't exist.");
}
}
else
{
Console.WriteLine("FATAL: Disk drive doesn't exist.");
}
}
Run Code Online (Sandbox Code Playgroud)
主要问题是您是否需要保留现在的相同错误报告.一般来说,如果需要,我认为通过反转案例可以更容易处理.这将允许您使用if/ 删除嵌套else if:
private static void SanityCheck()
{
if (!Directory.Exists(sDrive))
{
Console.WriteLine("FATAL: Disk drive doesn't exist.");
}
else if (!Directory.Exists(Path.Combine(sDrive, sFolder))
{
Console.WriteLine("FATAL: Root folder doesn't exist.");
}
else if (!Directory.Exists(Path.Combine(sDrive, sFolder, sDivFolder))
{
Console.WriteLine("FATAL: Div folder doesn't exist.");
}
else
{
bSanity = true;
}
}
Run Code Online (Sandbox Code Playgroud)
如果不需要详细的错误报告,您可以直接检查最低级别的文件夹:
private static void SanityCheck()
{
if (Directory.Exists(Path.Combine(sDrive, sFolder, sDivFolder))
bSanity = true;
else
Console.WriteLine("FATAL: Drive or folder doesn't exist.");
}
Run Code Online (Sandbox Code Playgroud)