当前位置:  开发笔记 > 编程语言 > 正文

帮助重构这个混乱嵌套的方法

如何解决《帮助重构这个混乱嵌套的方法》经验,为你挑选了1个好方法。

好的,我想要一些意见,我怎么能解决这个方法的混乱!

它与许多嵌套的'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
    }
   }


}

jjnguy.. 5

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

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

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

这可能有助于删除一些嵌套并使事情变得简单.



1> jjnguy..:

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

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

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

这可能有助于删除一些嵌套并使事情变得简单.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有