Задать вопрос
JnDev
@JnDev
Inquisitive

Чистый код: блоки 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 {} несколько понятных вызовов методов, то разве нужно выделять их в один метод? Тем более, становится сложно придумать РАЗНЫЕ названия для двух методов, которые делают по сути одно и то же. При этом, сам же Мартин очень большой акцент делает на хорошем и не запутывающем именовании методов.

Как считаете, стоит ли так делать? И следуете ли вы сами такому примеру?
  • Вопрос задан
  • 3463 просмотра
Подписаться 7 Оценить Комментировать
Ответ пользователя _ umr К ответам на вопрос (8)
Umr001
@Umr001
php
Думаю мартин ровно черкает иначе бы попустили бедолагу
Ответ написан
Комментировать