Чистый код: блоки try/catch. Стоит ли так делать? Читаю Рики Роберта Мартина - "Чистый Код". И до сих пор думаю об одном его совете, с которым мне тяжело согласиться. Мартин советует изолировать блоки try/catch, т.е. всю область, что находится в блоке try выделить в ОДИН отдельный метод. Например, вот такой довольно лаконичный и легко читаемый метод:public void delete(Page page)
{
try {
deletePage(page);
registry.deleteReference(page.name);
configKeys.deleteKey(page.name.makeKey());
} catch (Exception e) {
logger.log(e.getMessage());
}
}
Мартин предлагает преобразовать в два метода:public void delete(Page page)
{
try {
deletePageAndAllReferences(page);
} catch (Exception e) {
logger.log(e.getMessage());
}
}
private void deletePageAndAllReferences(Page page)
{
deletePage(page);
registry.deleteReference(page.name);
configKeys.deleteKey(page.name.makeKey());
}
Мартин говорит, что таким образом мы отделяем бизнес-логику от обработки ошибок.
Но, мне кажется, это избыточно. Да, разумеется, если у нас в try {} сложная логика то ее следует декомпозировать, но если у нас в try {} несколько понятных вызовов методов, то разве нужно выделять их в один метод? Тем более, становится сложно придумать РАЗНЫЕ названия для двух методов, которые делают по сути одно и то же. При этом, сам же Мартин очень большой акцент делает на хорошем и не запутывающем именовании методов.
Как считаете, стоит ли так делать? И следуете ли вы сами такому примеру?

21 Авг 2019 в 06:27
233 +1
0
Ответы
1

Каждый разработчик имеет свое мнение на этот счет, и нет однозначного ответа на вопрос, стоит ли изолировать блоки try/catch в отдельные методы. Основное преимущество такого подхода заключается в том, что это улучшает читаемость кода и обеспечивает более явное разделение бизнес-логики и логики обработки исключений. Это может быть особенно полезно в случае сложной логики или если вы хотите обработать ошибку по-разному в зависимости от контекста.

Однако, как вы правильно отметили, в случае простых блоков try/catch создание дополнительного метода может показаться избыточным. Это может усложнить код и сделать его менее читаемым, особенно если требуется придумать разные названия для двух методов, которые по сути делают одно и то же.

Таким образом, решение о том, стоит ли изолировать блоки try/catch в отдельные методы, должно зависеть от конкретного контекста и сложности логики. В случае простых блоков try/catch, возможно, имеет смысл оставить их внутри основного метода для улучшения читаемости и уменьшения избыточного кода. Однако, в случае сложной логики или необходимости обработки ошибок по-разному, изоляция блока try/catch в отдельный метод может быть полезным решением.

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир