Анализ кода возвращается с предложением не использовать & # 8220; out & # 8221; параметры

StackOverflow https://stackoverflow.com/questions/1404878

Вопрос

Я запустил инструмент анализа кода VS 2008 для созданного мной объекта и получил следующее предложение ...

  

Предупреждение 147 CA1021: Microsoft.Design   : Рассмотрите дизайн, который не   требовать, чтобы returnValue был out   Параметр.

Я нахожу " вне " Параметры довольно полезны и не осознают, что их считали нахмурившимися при проектировании. Я хотел знать, может ли кто-то пролить свет на причину, по которой я получил это Предупреждение? Если это плохая практика? Зачем? и что было бы хорошей практикой?

Я ценю любые советы.

Это было полезно?

Решение

С каждым предупреждением анализа кода связана соответствующая документация, доступ к которой можно получить, выделив предупреждение и нажав F1 . Вы также можете щелкнуть правой кнопкой мыши на элементе, чтобы получить помощь.

В любом случае, вот документация, объясняющая это конкретное предупреждение .

Я бы сказал, что есть несколько случаев, когда параметры out по-прежнему являются хорошим выбором, особенно когда речь идет об идиоме кодирования TryParse, потому что это настолько устоявшийся способ делать вещи, что большинство людей должны его понимать.

В общем случае, однако, существуют лучшие, более объектно-ориентированные решения для нескольких возвращаемых значений.

Другие советы

Однажды я провел анализ кода своего проекта. Также я получил много проницательных предложений, я очень кратко отключил это. Многие из предложений носят религиозный характер, вы можете сделать это так или иначе, вопрос стиля и не плохая практика.

В вашей ситуации. Если у вас есть только один возвращаемый параметр, верните его обратно из функции.

Если у вас также есть код возврата, который занимает место возврата, рассмотрите возможность использования исключений для информирования вызывающего кода об ошибках работы.

Если у вас есть много возвращаемых параметров, которые тесно связаны друг с другом, создайте класс / структуру, чтобы объединить их и вернуть в виде пакета.

Мне кажется, что многие предупреждения анализа кода имеют отношение к написанию кода API, который будут использовать третьи стороны. Ваше правило с параметрами out является классическим случаем: одна из причин, по которой они не используются, заключается в том, что многие другие программисты не будут знать о них.

Если они не соответствуют тому, что вы пишете, отключите правила анализа кода, которые вам не подходят. Лично я склонен отключать правила именования, переносимости и взаимодействия, поскольку они не имеют отношения к типу кода, который я пишу.

Я отключил это конкретное предупреждение в большинстве своих проектов. Поскольку я знаю, что когда я использую параметр out, у меня есть веская причина для этого, поскольку я стараюсь их вообще избегать.

Хотя я могу представить, что при работе с несколькими людьми над проектом вам может потребоваться включить это предупреждение, если вы хотите сделать несколько проверок кода ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top