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

写这个if..then逻辑的最干净的方法是什么?

如何解决《写这个if..then逻辑的最干净的方法是什么?》经验,为你挑选了6个好方法。

他们都做同样的事情.一种方式更好吗?显然,如果我编写代码,我会知道我做了什么,但其他人如何阅读呢?

if (!String.IsNullOrEmpty(returnUrl))
{
    return Redirect(returnUrl);
}
return RedirectToAction("Open", "ServiceCall");

要么

if (!String.IsNullOrEmpty(returnUrl))
{
   return Redirect(returnUrl);
}
else
{
    return RedirectToAction("Open", "ServiceCall");
}

Andrew Rolli.. 30

return String.IsNullOrEmpty(returnUrl) ? 
            RedirectToAction("Open", "ServiceCall") : 
            Redirect(returnUrl);

我更喜欢.

或替代方案:

return String.IsNullOrEmpty(returnUrl)  
            ? RedirectToAction("Open", "ServiceCall")  
            : Redirect(returnUrl);

这比问题中列出的任一选项都要差. (6认同)


Gavin Miller.. 24

我认为最好删除not(否定)并首先得到肯定的断言:

if (String.IsNullOrEmpty(returnUrl))
{
   return RedirectToAction("Open", "ServiceCall");
}
else
{
    return Redirect(returnUrl);
}

-要么-

// Andrew Rollings solution
return String.IsNullOrEmpty(returnUrl) ? 
                    RedirectToAction("Open", "ServiceCall") : 
                    Redirect(returnUrl);


krosenvold.. 21

一个风格问题:

if (String.IsNullOrEmpty(returnUrl))
{
    return RedirectToAction("Open", "ServiceCall");
}
return Redirect(returnUrl);

当你取消双重否定时,无论你选择哪种支撑方式,它都会读得更好.读得更好的代码总是最好的;)



1> Andrew Rolli..:
return String.IsNullOrEmpty(returnUrl) ? 
            RedirectToAction("Open", "ServiceCall") : 
            Redirect(returnUrl);

我更喜欢.

或替代方案:

return String.IsNullOrEmpty(returnUrl)  
            ? RedirectToAction("Open", "ServiceCall")  
            : Redirect(returnUrl);


这比问题中列出的任一选项都要差.

2> Gavin Miller..:

我认为最好删除not(否定)并首先得到肯定的断言:

if (String.IsNullOrEmpty(returnUrl))
{
   return RedirectToAction("Open", "ServiceCall");
}
else
{
    return Redirect(returnUrl);
}

-要么-

// Andrew Rollings solution
return String.IsNullOrEmpty(returnUrl) ? 
                    RedirectToAction("Open", "ServiceCall") : 
                    Redirect(returnUrl);



3> krosenvold..:

一个风格问题:

if (String.IsNullOrEmpty(returnUrl))
{
    return RedirectToAction("Open", "ServiceCall");
}
return Redirect(returnUrl);

当你取消双重否定时,无论你选择哪种支撑方式,它都会读得更好.读得更好的代码总是最好的;)


在所有变化中,我最喜欢这个.它干净,一致,明显且易读.

4> Scott Evernd..:

第二种方式更好,没有混淆你的意思......



5> Dana..:

我认为这是一个相当小的风格问题.我认为你的两个样本同样可读.

我更喜欢前者,但其他人只喜欢一个函数的一个退出点,可能会建议:

if (!String.IsNullOrEmpty(returnUrl))
{
   result = Redirect(returnUrl);
}
else
{
    result = RedirectToAction("Open", "ServiceCall");
}

return result;



6> recursive..:

我喜欢第一个例子,因为这个摘录更明显地返回.如果两者return都是缩进的块,那么需要花费更多的心理努力才能分辨出来.

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