@gogolang

Страница 1430 из 1630
Pawel
20.09.2018
13:22:24
коллекция - это вполне себе корректный термин в программировании
ну тоесть репозитории в программировании можно представить ввиде массива и мапы?

Bohdan
20.09.2018
13:22:27
"действующий как" - это не коллекция, это "представим как будто это коллекция", а что под капотом нас не интересует
я не согласен с утверждением Павла про CRUD в принципе, это весь мой поинт коллекция - это не круд, если не притягивать за уши

Maksim
20.09.2018
13:22:32
просто файлик, который почему-то зовётся *repository

Google
Maksim
20.09.2018
13:22:45
по моему ты гонишь
тебе явно виднее :)

V
20.09.2018
13:23:01
репозиторий может инкапсулировать как и массив, так и мапу

так и обращения к БД

Bohdan
20.09.2018
13:23:19
абстракция, определяющая апи базы. В ООП - в виде интерфейсов соотв.

нет, апи базы - CRUD операции над сущностями

про crud, как я понял, он вообще не про репозиторий говорил
вот, на чем я основываюсь это определение репозитория от Павла

Алексей
20.09.2018
13:23:50
"действующий как" - это не коллекция, это "представим как будто это коллекция", а что под капотом нас не интересует
Ну вообще в первом приближении "действующий как коллекция" и "коллекция" это в принципе одно и то же. Потому что вообще само понятие "коллекция" - это уже абстракция. Правда абстракции частенько протекают, но это уже другая история.

Алексей
20.09.2018
13:24:51
ну тоесть репозитории в программировании можно представить ввиде массива и мапы?
Нет. Массив и мапу можно представить в виде репозитория.

Maksim
20.09.2018
13:25:46
массив, мапу, указатель, юникс тайм - что угодно

Google
Pawel
20.09.2018
13:28:24
отлично. А можно вкачстве итога этой офигеть какой полезной дискуссии приветси пример, иллюстрирующей реальную пользу от использования репозитория в качестве абстракции базы? не связанный с переносом приложения от одной субд к другой, или там от БД к веб данным

Maksim
20.09.2018
13:28:53
ты сам понимаешь что несёшь?)

Pawel
20.09.2018
13:29:08
я в самом начале разговора сказал, что таких не видел. Переходы подобные - редкость. И?

V
20.09.2018
13:29:28
покрытие юнит-тестами бизнес-логики с использованием реализации репозитория в оперативной памяти

Maksim
20.09.2018
13:30:35
ну то есть по делу тебе сказать нечего
да, просто ты явно не оч в курсе за тему, в которую полез. Жаль тот джун нарвался на такого, как ты :)

V
20.09.2018
13:30:48
мокать базу??
не всю, а только необходимые репозитории

Maksim
20.09.2018
13:31:34
persistence ignorance, все дела. Но если чувак не понимает и не видет плюсов, а всяки фаулеры и бобы для него не авторитет, то чё толку с ним говорить

Алексей
20.09.2018
13:32:07
Вообще давайте начнём с того, что если бизнеслогика знает про существование базы - это уже не круто. Не, если пишете маленькую программку в команде из трёх человек, то вообще без разницы.

Никита
20.09.2018
13:32:43
В чем практичный смысл Репозитория?

Pawel
20.09.2018
13:33:19
persistence ignorance, все дела. Но если чувак не понимает и не видет плюсов, а всяки фаулеры и бобы для него не авторитет, то чё толку с ним говорить
расскзывать про авторитеты и всякую белиберду, именованную бессмысленными сочетаниями, много ума не надо.

Maksim
20.09.2018
13:33:38
для повелителей горутин, если угодно.

Pawel
20.09.2018
13:34:01
а, ну да, ну да

Алексей
20.09.2018
13:34:24
В чем практичный смысл Репозитория?
вот у меня точно такой же вопрос, только про orm

Maksim
20.09.2018
13:34:51
вот у меня точно такой же вопрос, только про orm
Отделить доменный слой от хранилища.

Pawel
20.09.2018
13:34:57
не всю, а только необходимые репозитории
зачем? проще создать тестовую БД и спокойно тестить по ней

Maksim
20.09.2018
13:35:11
что бы понимать зачем это, надо понимать что есть доменный слой и что есть хранилище.

Алексей
20.09.2018
13:35:13
А тут рассказывать и не надо на самом деле. Нужно чтобы человек сам сначала окунулся в построение архитектуры более-менее крупного приложения. Тогда он сам будет изобретать те самые репозитории.

Google
Pawel
20.09.2018
13:35:54
В чем практичный смысл Репозитория?
1. чтобы было 2. чтобы было как рассказали чуваки на конфах 3. чтобы было, как написано у дяди боба (как они это понимают) далее следует бред про БЛ слой и слой хранилища

V
20.09.2018
13:36:15
зачем? проще создать тестовую БД и спокойно тестить по ней
Когда у вас очень много тестов и они часто крутятся, то в оперативке будет быстрее.

Maksim
20.09.2018
13:36:20
если ты пишешь бложики на горутинах, тебе всё это не нужно) и так сойдёт.

V
20.09.2018
13:36:54
отдельную тестовую БД есть смысл на интеграционное тестирование, не на юнит

V
20.09.2018
13:37:19
правильно

Maksim
20.09.2018
13:37:20
о, мы тут в юнит тестах ещё тестируем базу данных. Прелесть какая

а при использовании репозиториев даже инмемори не нужна)

V
20.09.2018
13:37:35
а как вы свою in-memory db подставите в код?

Никита
20.09.2018
13:37:36
Я правильно понимаю что репозиторий мы строим по принципу структуры с методами аля Структура Post (db) Метод CreatePosts([]Post)?

Алексей
20.09.2018
13:37:58
Отделить доменный слой от хранилища.
ну опять же, я видел, где это делается на уровне repository. К примеру, есть метод FindByEmail(ctx, email), в котором написан SQL запрос под нужную БД, у репозитория есть свой объект, и при отдаче он конвертит в доменный объект

Алексей
20.09.2018
13:37:58
1. чтобы было 2. чтобы было как рассказали чуваки на конфах 3. чтобы было, как написано у дяди боба (как они это понимают) далее следует бред про БЛ слой и слой хранилища
Тебе уже написали, что нужно для абстрагирования и разрушения жёстких связей между теми частями системы, которые не должны быть жёстко связанными.

Никита
20.09.2018
13:38:11
AddPost(post Post)
Ну тип того, да

Окей, в чем принципиально разница между вызовом метода структуры типа Post.Create()? В чем преимущества?

Aleksandr
20.09.2018
13:38:48
Ну тип того, да
большая разница. репозиторий добавляет сущность в хранилище, а не создает сущность. сущность уже создана до этого

Pawel
20.09.2018
13:39:07
Тебе уже написали, что нужно для абстрагирования и разрушения жёстких связей между теми частями системы, которые не должны быть жёстко связанными.
ты действительно считаешь что до тебя я не слышал никогда этого бессмысленного набора слов? я каждую неделю на конфах

Google
Maksim
20.09.2018
13:39:31
самосоздаваемая сущность?)
актив рекордом пахнет)

Никита
20.09.2018
13:40:21
и что оно делает?
Создаёт пост )

Maksim
20.09.2018
13:40:33
ты действительно считаешь что до тебя я не слышал никогда этого бессмысленного набора слов? я каждую неделю на конфах
ты зря тратишь время и зря пытаешься джунам рассказывать что они не правы. Нарвутся на вменяемых ребят, повторят за тобой и испортят карму.

Никита
20.09.2018
13:40:35
самосоздаваемая сущность?)
Ну, получается так

Aleksandr
20.09.2018
13:40:37
Создаёт пост )
так пост уже создан - ты же из него метод вызываешь

Алексей
20.09.2018
13:40:50
ты действительно считаешь что до тебя я не слышал никогда этого бессмысленного набора слов? я каждую неделю на конфах
бессмысленный набор слов??? Я обычно стараюсь такого не говорить, ибо сам не без греха, но ты просто абсолютно некомпетентен как программист.

Никита
20.09.2018
13:41:24
так пост уже создан - ты же из него метод вызываешь
Не, мы сначала инициализировали структуру с полями, потом вызвали метод на сохранение поста в Бд

V
20.09.2018
13:41:29
а может это просто толстый тролль

Aleksandr
20.09.2018
13:41:50
Не, мы сначала инициализировали структуру с полями, потом вызвали метод на сохранение поста в Бд
вот инициализация - это и есть создание поста. а сохранение - это сохранение

Admin
ERROR: S client not available

Алексей
20.09.2018
13:41:51
а может это просто толстый тролль
Не бывает настолько толстых троллей (наверное).

Никита
20.09.2018
13:42:20
вот инициализация - это и есть создание поста. а сохранение - это сохранение
Инициализировали в коде, Create - метод на создание поста в Бд

Alexander
20.09.2018
13:42:42
Не бывает настолько толстых троллей (наверное).
https://ru.wikipedia.org/wiki/%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D0%94%D0%B0%D0%BD%D0%BD%D0%B8%D0%BD%D0%B3%D0%B0_%E2%80%94_%D0%9A%D1%80%D1%8E%D0%B3%D0%B5%D1%80%D0%B0

Никита
20.09.2018
13:42:51
и я про то же
Окей, тогда вы о чем?

Я спрашиваю про разницу между подходами

Pawel
20.09.2018
13:43:27
бессмысленный набор слов??? Я обычно стараюсь такого не говорить, ибо сам не без греха, но ты просто абсолютно некомпетентен как программист.
ты написал бессодержательную белиберду, много слов и ноль разъяснений. Возникает вопрос - что это было?

Lesha
20.09.2018
13:43:44
Я спрашиваю про разницу между подходами
Условно, если у вас будет несколько постов, то в вашем случае каждый инстанс поста будет иметь в себе соединение с БД верно?

Aleksandr
20.09.2018
13:43:49
Я спрашиваю про разницу между подходами
репозиторий - это абстрагирование от хранилища.

Google
V
20.09.2018
13:43:59
Pawel
20.09.2018
13:44:41
если вы не поняли, то в данном случае это говорит о вашей компетенции
нет. Это говорит о том, что человек не понимает о чём он говорит и зачем

Алексей
20.09.2018
13:44:45
ты написал бессодержательную белиберду, много слов и ноль разъяснений. Возникает вопрос - что это было?
Это бессодержательная белиберда бессодержательна для тебя только потому что ты просто не сталкивался с такими задачами, для которых эта белиберда становится осмысленной.

V
20.09.2018
13:44:49
я его понимаю

Aleksandr
20.09.2018
13:45:16
так, ладно, собственно тема исчерпала себя. Давайте закроем.

Maksim
20.09.2018
13:45:20
Не кормите тролля)

V
20.09.2018
13:45:23
поддерживаю

Алексей
20.09.2018
13:46:01
Это бессодержательная белиберда бессодержательна для тебя только потому что ты просто не сталкивался с такими задачами, для которых эта белиберда становится осмысленной.
В этом в принципе нет ничего плохого, все такими были. А вот то, что такой человек пытается собеседовать джунов - вот это уже нехорошо.

Maksim
20.09.2018
13:46:28
Скорее людей в принципе)

Никита
20.09.2018
13:51:52
репозиторий - это абстрагирование от хранилища.
За счёт чего происходит абстракция? И почему в подходе который я предложил ее нет?

Алексей
20.09.2018
13:53:35
Это бессодержательно, потому что я пример просил, а ты решил отделаться общими словами
Мне лень приводить пример, потому что в три строчки он не уместится, и даже в тридцать строчек тоже скорее всего не получится уместить.

Aleksandr
20.09.2018
13:53:54
За счёт чего происходит абстракция? И почему в подходе который я предложил ее нет?
я не говорил, что ее нет. указал лишь на количество ответственностей сущности. сущность занимается не своим делом

Алексей
20.09.2018
13:54:03
Да тут и примеры уже не помогут

Maksim
20.09.2018
13:54:13
у тебя сущность знает как себя создать, сохранить и изменить. если она себя ещё и получать сможет, хуже не станет. тут проблема в разделении ответственности. Вариант с использованием тех же репозиториев подразумевает иную степень изоляции

Алексей
20.09.2018
13:55:53
в active record сущность сама знает как себя положить в базу, а вообще не должна об этом знать, так как опять же создаёт ненужную жёсткую связь между базой и сущностью

Lesha
20.09.2018
13:55:59
За счёт чего происходит абстракция? И почему в подходе который я предложил ее нет?
В вашем подходе вы смешиваете данные и работу с этими данными. Репозиторий же предоставляет интерфейс для работы с данными. Вот условно у вас есть юзер. Юзеры могут быть в кэше и в бд. В случае с вашим подходом, нужно создавать две сущности userdb и usercache. И они будут содержать данные и работу с конкретной реализацией. А теперь выдергиваем данные юзера в отдельную структуру. Где будут только поля + два репозитория бд и кэш, которые имеют схожие интерфейсы и принимают/возвращают инстанс структуры юзера

таким образом вы отделяете логику работы с конкретной БД и данные

Maksim
20.09.2018
13:56:49
я уже писал ранее, повторю ещё раз: это всё часть persistence ignorance

Страница 1430 из 1630