gpt4 book ai didi

refactoring - 帮助重构这个困惑的嵌套if方法

转载 作者:行者123 更新时间:2023-12-01 09:11:39 25 4
gpt4 key购买 nike

好的,我想要一些意见,我该如何解决这个困惑的方法!

它有很多嵌套的“if”语句。

但是意识到我必须确切知道方法失败的地方,目前在每个相应的“else”子句中我都在记录错误(失败的“if”条件)。

注意:忽略事物背后的任何逻辑,请关注样式和结构,因为我已经编好了所有函数名称等。

这是骨架结构:

   public void MyMethod()
{

try
{
bool tryAgain = false;

string filename = DownloadFile();

if( IsFileFormatOk(filename) )
{

blah = GetBlah(filename);

if(blah.ID > 0)
{

if(ImportFile(filename)
{

string username = GetUserFromFile(filename);

if(isValidUser(username))
{

// few more levels to go
//
//
//

}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}


}
else
{

LogError(filename, ...); // specific to this if statement
tryAgain = true;
}

}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}

}
else
{
LogError(filename, ...); // specific to this if statement
tryAgain = true;
}

}
catch
{
}
finally
{
if(tryAgain)
{
// blah
}
}


}

最佳答案

我会努力改变你的逻辑,这样你就可以尽快从方法中返回,而不是嵌套更多的逻辑。例如:

//  GOOD
if (!file.exists())
return;
// Rest of the code

// BAD
if (file.exists()){
// Code goes here
}
return;

这可能有助于消除一些嵌套并使事情变得不那么复杂。

关于refactoring - 帮助重构这个困惑的嵌套if方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/428262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com