Мы обсуждали с нашими коллегами, что означает, если имя метода начинается с «Try».
Были следующие мнения:
- Используйте «Try», когда метод может вернуть нулевое значение.
- Используйте «Try», когда метод не сгенерирует исключение.
Какое официальное определение? Что говорит «Try» в названии метода? Есть ли официальное руководство по этому поводу?
c#
naming-conventions
ms007
источник
источник
Ответы:
Это известно как шаблон TryParse и было задокументировано Microsoft. В официальных Исключения и производительность MSDN страница говорит :
Таким образом, если у вас есть код, для которого обычный случай использования может означать, что он может выдать исключение (например, синтаксический анализ int), шаблон TryParse имеет смысл.
источник
(Исправлено) Существует официальное руководство, как предложил Эрик.
Когда я вижу
TrySomething
метод, я предполагаю этоbool
Something
метод, который позволяет мне обрабатывать любые исключения самостоятельно. (редактировать, предложенный Джесси Уэббом)источник
TryFoo
метод, будет аналогичныйFoo
метод, который позволит мне обрабатывать любые `` исключения самостоятельно. Сигнатуры этих методов, вероятно, будут другими, поэтому их использование не будет взаимозаменяемым без других изменений кода.Я думаю, что вы должны использовать,
try
когда вы хотите продолжить. Неважно, что метод возвращает какое-то значение или нет.Случай 1: если он возвращается нормально, вы можете продолжить каким-то образом.
Случай 2: если он не возвращается: он все еще в порядке; Вы можете продолжить как-то иначе.
И если вы ожидаете какое-то значение в качестве вывода этого метода, используйте
out
параметр.пример
источник
Вы должны использовать «Try» в имени метода, когда вы хотите продемонстрировать тот факт, что вызов метода может привести к неверному результату. Следуя стандарту .NET, это, кстати, не функция, которая вызывает исключение, а функция, которая возвращает некоторое
VALID
илиNON_VALID
, с точки зрения программы, значение.В конце концов, это все о соглашении об именах, которое вы решили использовать в своей группе.
источник
Не забудьте включить
try
в ваше имя метода, если:bool TrySomething(input, out yourReturn)
Таким образом, в основном, если мы используем
try
-методы, мы получаем только логический результат.Поэтому следующий код не будет выдавать никаких исключений:
Принимая во внимание, что этот код может (и в этом случае будет) генерировать исключения:
Использование методов Try - более безопасный и более безопасный способ написания кода. Также фрагмент кода № 2 требует большей производительности для выполнения, если это не целое число.
источник
int number = int.Parse(input);
если вы хотите, чтобы он был более значимым в этом контексте.int number;
объявление перед блоком try иnumber = ...
присваиванием.TryLoadFile(path, out file)
вау, из ОЗУ. Таким образом, вызывающая сторона не будет ожидать ошибок при неверном пути или отказе в доступе, но будет исключением из более странных вещей, которые также могут пойти не так. И документируйте это.Дядя Боб приводит пример ниже в своей книге « Чистый код» . Всякий раз, когда мы ожидаем, что будет сгенерировано исключение, мы можем использовать
Try
префикс для имени метода:А потом (адаптировано):
tryToShutDown
Метод не делает никакой обработки ошибок, потому что это ответственностьsendShutDown
методы.TryParse
Модель Microsoft нарушает чистый код директиву , которая говорит , что мы должны избегать выходных параметров.Если мы не разрабатываем новую версию C #, нам не нужно следовать всем рекомендациям Microsoft. Иногда они не самые лучшие.
источник