
Артур Евгеньевич
03.02.2017
17:33:26
самый простой наверное способ убедиться в том что твое понимание верное - попробовать объяснить другому
Транзакшн я понял как самый бесполезный подход, который просто инкапсулирет каждую операцию в отдельную функцию, и вызывает её при запросе от клиента. ТэйблМодуль основывается на том что каждой таблице сопоставляется объект, который может всячески взаимодействовать с ней. Ну и домэйнмодел это уже полноценное ООП где в основе всего стоят именно сущности, их обязанности и взаимодействие. Как я понял все три подхода теоретически можно сочитать даже плюс добавить поверх них что то вроде контроллера(забыл как называется он).сорян за косноязысность пишу в метро)
Объекты сущностей

Aliaksandr
03.02.2017
17:52:21
>транзакшн бесполезный
А если бы в гитлабе транзакции использовали, 300гб прод базы не улетели бы.

Google

Aliaksandr
03.02.2017
17:54:03
Но если производительность > безопасность, то верно мнение выше.

Артур Евгеньевич
03.02.2017
17:54:17
Я не про транзакции уровня бд
А про паттерн transactionScript

Aliaksandr
03.02.2017
17:55:41
"бесполезный подход" значит я понял не верно, думал достаточно обще.

Sergey
03.02.2017
19:41:38
ну то есть например полноценную объектную модель предметной области нужно все-таки где-то хранить (репозиторий), и это что-то должно как-то общаться с базой (DAO)


Артур Евгеньевич
03.02.2017
19:45:45
https://www.google.ru/url?sa=t&source=web&rct=j&url=http://design-pattern.ru/patterns/table-module.html&ved=0ahUKEwia7Yef2PTRAhWhdpoKHef_DZcQFggdMAA&usg=AFQjCNF8eujfFs55sVQnHxvW7p0K9YqvBQ&sig2=sS6tg1vvW1hqigV-Oyw3Rw
Вот это пытался объяснит

Sergey
03.02.2017
19:46:58
хз

Артур Евгеньевич
03.02.2017
19:47:05
Так а можно бизнес транзакций например реализовать поверх domain model?

Sergey
03.02.2017
19:47:06
никогда не понимал людей которые пытаются выучить паттерны

Google

Sergey
03.02.2017
19:47:42
domain model как паттерн весьма и весьма мутная концепция
у Эванса есть очень четкая концепция
есть domain model и это совокупность всеъ объектов описывающих предметную область

Артур Евгеньевич
03.02.2017
19:48:10
Та я не пытаюсь выучить, просто читаю книгу и охотно обсудить прочитанное

Sergey
03.02.2017
19:48:27
начни с этого

Артур Евгеньевич
03.02.2017
19:49:07
Фаулер шаблоны корпоративных приложений

Sergey
03.02.2017
19:50:09
совершенный код говно, чистый - норм
это как кокс но код
там несколько веселее чем у Макконела
я даже бумажную версию заказал

da horsie
03.02.2017
23:58:59
а вы следуете правилу одного ассерта, когда пишете тесты?

Sergey
04.02.2017
00:00:10
что за правило такое?)
есть другое правило
тест должен фэйлится только по одной причине
а используешь ты один ассерт или несколько - это уже твое дело

da horsie
04.02.2017
00:01:03
вот оно да
дядя Боб называет это правилом единого ассерта
ассерт (или нексколько) в рамках одного теста должны проверять только одно утверждение

Google

Sergey
04.02.2017
00:03:04
ну, норм. Это позволяет делать более сфокусированные тесты

da horsie
04.02.2017
00:03:53
вот пишешь ты некий клиент для некоего АПИ
клиент должен составить правильный запрос к апи и вернуть обработанный (декодированный) ответ
значит должно быть как минимум два теста, да?
тест на то, что запрос правильный
и на то, что ответ правильно воспринимается

Sergey
04.02.2017
00:05:11
ты ж не забывай что дядя Боб за юнит тесты впрягает

da horsie
04.02.2017
00:05:51

Sergey
04.02.2017
00:06:04
идея в чем

da horsie
04.02.2017
00:06:08
ну хорошо, не апи клиент, а некий прокси к удаленному сервису

Sergey
04.02.2017
00:06:15
у тебя есть объект, который обязуется правильно конструировать запросы

Sergey
04.02.2017
00:06:20
и он оттестирован отдельно
и ты его просто юзаешь
и тебя не парят тест кейсы по составлению запросов больше
точно так же будет объект который обрабатывает какой-то результат

da horsie
04.02.2017
00:07:12
понял тебя
здраво, да

Sergey
04.02.2017
00:07:17
и он тоже оттестирован отдельно
НО

Google

Sergey
04.02.2017
00:07:31
есть третий объект который юзает эти два
и его нельзя покрыть юнит тестами
просто потому что все что он делает - просит сначала один объект что-то сделать и потом второй
декларирует флоу
и ты.... такие вещи не проверишь нормально. Это уже интеграционные тесты

Admin
ERROR: S client not available

Sergey
04.02.2017
00:08:57
профит тут в том что у тебя может быть один медленный интеграционный тест который проверяет взаимодействие компонентов на сценарии который покрывает весь флоу
и много маленьких и быстрых юнит тестов которые покрывают различные сценарии связанные с формированием запросов/обработкой результатов
иначе тебе придется все эти тест кейсы делать медленными
правда если система небольшая и тесты всеравно выполняются за разумное время (скажем минуту)
то как бы... и так сойдет и не надо дробить слишком сильно

da horsie
04.02.2017
00:10:37
у меня нет ничего медленного
я думаю, что пока обойдусь несколькими отдельными тестами на весь апи клиент

Sergey
04.02.2017
00:11:24
если тебе так удобно и в целом ты все еще можешь запускать тесты часто - норм

da horsie
04.02.2017
00:12:14
у меня вся сюита занимает < 3 сек на сраном тормозном макбуке, так что ок)
Time: 2.85 seconds, Memory: 53.75MB
OK (1105 tests, 1468 assertions)
15 месяцев назад было 0 тестов ))
я молодец

Sergei
04.02.2017
00:15:51
Неплохо.
Я на двух крупных проектах спасался исключительно тестами - иначе хоть вешайся (nodejs, python).

Google

Sergey
04.02.2017
00:22:55
правда сейчас где-то сотенка тест кейсов пока-что
на след неделе планирую еще сотенку

da horsie
04.02.2017
00:23:51
сколько у тебя инженеров?
у меня получается около 0.3 теста на инженера в день :)
маловато)
при адских объемах кода, который льется в репу

Sergey
04.02.2017
11:21:25

Sergey
04.02.2017
19:50:50
как-то людей набежало

Sergey
04.02.2017
19:54:47
толку

Sergey
04.02.2017
22:13:11
Это hr'ы

F01134H
04.02.2017
22:16:05
кого они хотят тут найти
в чате по ООП
?

Dmitriy
04.02.2017
22:34:52

Sergey
04.02.2017
22:35:36
солидная девчина ищет солидного мужчину