繁体   English   中英

摆脱虚空方法?

[英]Get out of a void method?

我有这个方法(修改后的代码):

public static void PublishXmlForCustomTypes(MyOwnClass DefaultOutputInformation)
{
    if (DefaultOutputInformation != null)
    {
        ///lot of code
    }
}

我的整个代码都在if语句中,在考虑之后,我改为:

public static void PublishXmlForCustomTypes(MyOwnClass DefaultOutputInformation)
{
    if (DefaultOutputInformation == null)
    {
        return;
    }
    ///lot of code
}

就我测试它而言,它似乎是完全相同的,但事实确实如此吗? 我的意思是,“返回”声明让我们脱离了方法吗?

这是完全相同的,第二个版本是要走的路:)

是的,这绝对没问题。

有些人教条地坚持“每个方法一个出口点” - 这对于确保你总是在C中的函数结束时进行适当数量的清理是相当棘手的,例如......但它是在C#中没有必要。

就个人而言,我认为一旦你知道你已经完成了一个方法中你真正想要的所有工作,就应该回来。 使用try/finallyusing语句执行任何额外的“清理但我退出”工作。

是的return让你退出方法; 如果你有一个finally块并且你从try块调用return,那么无论如何都会执行finally块。

是的, return语句结束了该方法。

是的,退货将退出代码。 这通常是一个很好的做法,作为函数中的第一步,验证传入的参数是否是您认为的并退出(通过返回或抛出异常),这样您就不会进行任何不必要的处理不得不在以后的功能中止。

是的,你的假设是正确的。

在某些背景下,了解二元性

是的,它完全相同,你可以阅读关于关键字返回的MSDN文档,以完全理解它是如何工作的: http//msdn.microsoft.com/en-us/library/1h3swy84.aspx

至于决定哪种方式更好:两者都很好,但第二个版本使它更具可读性,因为那时你的整个代码都不在if块中。 这样,您可以轻松地查看条件的作用,而不是阅读方法的整个代码。

确实, return会让你退出方法,因此它等同于你使用的第一种方式。 哪种方式更好取决于您的代码,虽然通常我更喜欢第二个版本。

看看修改后的代码,第二个是要走的路。 虽然在功能上是等效的,但请考虑将4个不同变量传递给要检查的函数的情况。 而不是在{到处都有一个令人讨厌的4级if语句,第二种方法允许你清理代码的外观而不添加不必要的括号级别。 如果您使用C / C ++编写,您甚至可以将其设置为VERYIFY_NOT_NULL(x)等宏,并使代码更好,更整洁。

可读/可维护的代码在99%的时间内胜过纳秒级的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM