Skip to content

Резюме зустрічі 13.01.16

romach edited this page Jan 18, 2016 · 1 revision

youtube-icon Відео

Поточні задачі [1:26 - 6:15]

Запитання [6:15 - 56:40]

Логика в контроллерах. Мы много раз говорили на митингах, что логики в контроллерах и дао быть не должно. Логика должна быть только в сервисном слое. Верно? [6:15 - 42:20]

  • роль контролера [6:15 - 11:50]:

    • конвертація з однієї сущності в іншу;
    • формування бізнес-сущностей;
    • валідація введених користувачем даних;
    • роутинг url;
    • exception handling;
  • перенести класи [11:50 - 18:50]:

    • FilterWrapper -> controller
    • FilterConverter -> controller
  • транзакции [22:30 - 35:00]:

  • Concurrency control

  • зробити рефакторинг EventTechnologySqlBuilder - погана читаємість [35:00 - 38:50]

    • багато вкладень
  • рівень DAO [38:50 - 42:20]:

    • може містити логіку в SQL;

Создание собственных исключений. Я считаю, что для таких случаев как "пользователь не найден", "пользователь уже существует" и им подобных нужно использовать наследование от Exception, а не от RuntimeException. Саня Власов утверждает, что сейчас бест практис - это использование unchecked исключений (пруфов он мне не давал). В принципе, я нашел статью Брюса Эккеля "Does Java need Checked Exceptions?" http://www.mindview.net/Etc/Discussions/CheckedExceptions но я не считаю, что он прав в данном вопросе. ИМХО, если мы используем checked исключения, то мы устанавливаем контракт, которого должны придерживаться и мы сами, и те, кто будет работать с кодом после нас. Если использовать unchecked исключения, то их легко забыть, потерять и т.п. Что скажешь ты? Какой подход ты бы хотел видеть в нашем проекте? [42:20 - 45:45]

  • краще писати Runtime-exceptions;
  • chrcked-exceptions породжують велику кількість try-catch;

Саня Власов говорит, что ты описал на каком-то из митингов (возможно, я тогда отсутствовал) правильную работу с исключениями в "слоеном" приложении так: кидаем дао-эксепшн в дао, ловим его в сервисе, кидаем вместо него сервис-эксепшн, который ловим в контроллере, где кидаем свой контроллер-эксепшен, который уже в свою очередь обрабатывается ЭксепшенХендлером. Действительно ли мы должны так делать? Вроде как цель этого - сделать слои независимыми, чтобы слой контроллера ничего не знал об исключениях слоя Дао, но выглядит это как появление дополнительных обработок исключений в каждом методе сервисного слоя (как сделано на данный момент в ветке refactoring-exeptions) [45:45 - 56:40]

  • треба залишити конвертацію
Clone this wiki locally