Выйти из метода пустоты? - программирование

Выйти из метода пустоты?

У меня есть этот метод (измененный код):

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
}

Насколько я тестировал, он кажется строго эквивалентным, но действительно ли это так? Я имею в виду, что выражение "return" выводит нас из метода правильно?

4b9b3361

Ответ 1

Это строго эквивалентно, а вторая версия - путь:)

Ответ 2

Да, это абсолютно нормально.

Некоторые люди догматически придерживаются "одной точки выхода на один метод", что было подходящим, когда было довольно сложно сделать так, чтобы вы всегда делали правильную сумму очистки в конце функции на C, например. но в С# это не обязательно.

Лично я считаю целесообразным вернуться, как только вы узнаете, что выполнили всю работу, которую вы действительно хотите использовать в методе. Используйте операторы try/finally или using для выполнения любой дополнительной операции "очистка, однако я выхожу".

Ответ 3

да return выводит вас из метода; если у вас есть блок finally, и вы вызываете return из блока try, блок finally выполняется в любом случае.

Ответ 4

Да, возврат выйдет из кода. Как правило, хорошей практикой является первый шаг в функции проверки того, что параметры, которые были переданы, - это то, что вы думаете, и они выходят (через возврат или исключение), так что вы не делаете ненужной обработки только для должны быть прерваны позже в функции.

Ответ 5

Да, ваши предположения верны.

Для некоторого фона узнайте о двойственности.

Ответ 6

Да, это точно то же самое, вы можете прочитать документацию MSDN о возврате ключевого слова, чтобы полностью понять, как это работает: http://msdn.microsoft.com/en-us/library/1h3swy84.aspx

Как решить, какой путь лучше: оба хороши, но вторая версия делает его более читаемым, потому что тогда весь ваш код не находится внутри блока if. Таким образом, вы можете увидеть, что условие действительно легко, а не читать весь код метода.

Ответ 7

Действительно, return выводит вас из метода, поэтому он эквивалентен первому используемому вами способу. Какой способ лучше зависит от вашего кода, хотя обычно я предпочел бы вторую версию.

Ответ 8

Да, оператор return завершает метод.

Ответ 9

Глядя на пересмотренный код, второй путь. Будучи функционально эквивалентными, подумайте о случае, когда вы передали 4 разных переменных функции, которую вы хотите проверить. Вместо того, чтобы делать неприятный 4-уровневый оператор if (везде, второй метод позволяет очистить внешний вид кода и не добавлять лишние уровни скобок. Если вы пишете на C/С++, вы можете сделать это макросом, например VERYIFY_NOT_NULL (x), и сделать код приятным и аккуратным.

Считываемый/поддерживаемый код превосходит nano-секунды производительности в 99% случаев.