Суффикс для исключений

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить

Какое именование исключений вам нравится больше?

С суффиксом, `FormattingException`
20
95%
Без суффикса, `FormattingFailed`
1
5%
 
Всего голосов: 21

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Суффикс для исключений

Сообщение samdark » 2019.07.04, 20:02

Как и в случае с интерфейсами, я попробовал несколько именований чтобы выяснить, нормально ли жить без суффикса "Exception".

Если именовать аккуратно, получается что-то вроде FromattingFailed. То есть правила могут быть:

1. Использовать прошедшее время чтобы показать что уже случилось.
2. Имя должно показывать что случилось что-то плохое.

Что думаете?

Loveorigami
Сообщения: 974
Зарегистрирован: 2014.08.27, 21:54

Re: Суффикс для исключений

Сообщение Loveorigami » 2019.07.04, 21:34

Как и в предыдущем посте, я за префикс. Корневой класс - Exception

Код: Выделить всё

try {
    // init bootstrapping phase
 
    $config_file_path = "config.php";
 
    if (!file_exists($config_file_path))
    {
      throw new Exception("Configuration file not found.");
    }
  
    // continue execution of the bootstrapping phase
} catch (Exception $e) {
    echo $e->getMessage();
    die();
}
в блоке try ... могут быть разные классы, а в catch - только Exception

в плане чтения кода (специально утрирую, чтоб была понятна мысль)

Код: Выделить всё

try {

    $isValid = new FormattingFailed($text)->check();
 
    if (!isValid)
    {
          throw new FormattingFailedException("NotValid.");
    }
 
} catch (FormattingFailedException $e) {
    echo $e->getMessage();
    die();
} catch (Exception $e) {
    echo $e->getMessage();
    die();
}

+ опять же в шторме легче найти ...FailedException, вместо ...Failed, перебирая которые вспоминать, что из них Exception, что Interface, что Dto...

Аватара пользователя
chungachguk
Сообщения: 425
Зарегистрирован: 2012.07.17, 11:52

Re: Суффикс для исключений

Сообщение chungachguk » 2019.07.05, 06:28

В отличии от предыдущего поста, здесь я за суффикс. Чтобы было единообразие в нейминге с самим PHP. Всё таки исключения вида `FormattingFailed` это нечто узкоспециализированное, что-то из доменной области нежели действующее на всю систему.

Аватара пользователя
ElisDN
Сообщения: 5428
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Суффикс для исключений

Сообщение ElisDN » 2019.07.05, 16:13

FormattingFailed в прошедшем времени – это похоже событие, а не исключение.

Аватара пользователя
samdark
Администратор
Сообщения: 9195
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Суффикс для исключений

Сообщение samdark » 2019.07.05, 17:32

Итого пока будем с суффиксом: https://github.com/yiisoft/docs/blob/ma ... eptions.md

Решение до релиза можно поменять.

Nex-Otaku
Сообщения: 825
Зарегистрирован: 2016.07.09, 21:07

Re: Суффикс для исключений

Сообщение Nex-Otaku » 2019.07.08, 13:11

Суффикс Exception, в отличие от интерфейсов, помогает читать код.

Код: Выделить всё

try {
    $this->printFormattedText();
} catch (FormattingFailedException $e) {
    echo $e->getMessage();
    die();
}
Сводим к текстовой информации:

Код: Выделить всё

Try
    Print formatted text
Catch formatting failed exception
    Echo exception message
    Abort script
Читаем вслух что написано:

Код: Выделить всё

Попытаться
    Вывести отформатированный текст
Ловим исключение, что форматирование не удалось
    Выводим сообщение исключения
    Прекращаем работу скрипта
Так как суффикс исключения делает код более осмысленным, то для исключений должны быть суффиксы.

Аватара пользователя
mat.twg
Сообщения: 218
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Суффикс для исключений

Сообщение mat.twg » 2019.10.16, 04:30

Блин.. да делай везде суффиксы, как Model,Controller,Exception,Interface и т.д... усё должно быть единообразно...

Ответить