
Ivan
19.04.2018
05:54:54
У меня на работе эстонка вордпесит
Не, просто вп это сборник говнокода
Сочувствую

Bohdan
19.04.2018
06:19:38
а как это относится к данному чату?

Google

Bohdan
19.04.2018
06:19:57
тебе, скорее всего, в @phpGeeks
ну собственно че флуд разводить не по теме чата, да?) если кто и есть - там или @prophp7

Pavel
19.04.2018
08:47:16

Maksim
19.04.2018
08:49:22

Pavel
19.04.2018
08:51:09

Roman
19.04.2018
08:52:43
Вы бы доклады его посмотрели
Чтобы понимать почему он так говорит

Pavel
19.04.2018
08:52:56
Бля лол
Не увидил что это из его статьи
Светоч ООП

Roman
19.04.2018
08:54:38

Sergey
19.04.2018
08:55:06
Скорее фрик
фрик в корошем смысле. Ну просто он избрал такой стиль донесения информации и он работает

Bohdan
19.04.2018
08:55:20
просвещение через срачики

Google

Sergey
19.04.2018
08:55:23
как минимум в половины подгорит от его изречений и часть даже пойдет разбираться

Roman
19.04.2018
08:55:42

Adel
19.04.2018
08:56:39
ну вот конкретно эта его статья вполне себе ничего.
даже хорошая
как тут правильно замечали не раз. он поднимает правильные вопросы и проблемы. просто решения часто очень сомнительные

Roman
19.04.2018
08:58:43
Ну вот я по Эвансу делаю. C#. И что то нет нужды геттеры выбрасывать. Они не дают возможности как то состояние объекта сломать
А без сеттеров ORMка не сможет из базы сущности прочитать
Поэтому они тоже есть, хоть и приватные
А если хочется стейт менять - велкам в публичные методы класса, которые проверят что ты в них пытаешься передать и проследят за тем, чтобы ты не смог сломать стейт объекта

Pavel
19.04.2018
09:02:19
а Elegant Objects таки перевели на русский понять не могу?

Roman
19.04.2018
09:03:06

Adel
19.04.2018
09:09:50

Roman
19.04.2018
09:11:50
а что за ORM
EF Core, он в приватные сеттеры умеет, и не только в них)
Даже в приватные поля)

Adel
19.04.2018
09:12:17
эх. хочу на сишарпе опять писать :)

Roman
19.04.2018
09:13:26
Или у тебя get-only IEnumerable, который ссылается на приватную ICollection, которая на самом деле List)) И при чтении из базы он в это поле запишет перечисление, а снаружи доступ только на чтение будет)
Правда можно руками скастить IEnumerable до листа и суеты туда насувать, но за такое на код ревью надо голову откручивать

Adel
19.04.2018
09:18:04
я хочу один проект начать. и с удовольствием бы его на сишарпе делал. но разумеется инфраструктура будет линуксовой. где лучше почитать что там и как? с этим .net core... где ориентироваться... в нугете по прежнему надо все зависимости зависимостей прописывать в главном файле? :)

Maksim
19.04.2018
09:31:34

Alan
19.04.2018
09:33:45

Google

Trk
19.04.2018
09:42:59

Alan
19.04.2018
09:43:56
и если он свою работу делает лучше то пусть найдет другое место где его оценят)

Trk
19.04.2018
09:45:59
У него мысли типа такие если он реално хороший тогда его дадут денги который он заслужить везде.Но на самом деле не так бывает.Хотя я так думаю.

Alan
19.04.2018
09:47:20
ну я думаю с маленьким опытом себя продать можно в компанию где тебя не расколят на собесе и потом не расколят в ходе работы, бежать оттуда надо))

Trk
19.04.2018
09:48:08
Правилно
Я могу сказать что русские компание немного не такие хитрие на основном.Я знаю миого компание в других странах типа начинаешь разработчик Android потом от тебя просят учиться swift и потом хотят ты написал для обоих платформах.А зарплата только немного повысят и все.

Alan
19.04.2018
09:53:53
другое дело что компании может не так важен опыт, сколько другие качества, мотивация, ответственность, умение работать в команде, да много чего)

Denis
19.04.2018
09:55:28

Aleh
19.04.2018
09:56:56

Adel
19.04.2018
09:59:15
Второй шаг - геттеры действительно не нужны :) там в статье не надо giveBall(): Ball там надо giveBallTo(someone): void

Aleh
19.04.2018
10:06:08
потом уже дабл-диспатчи, ивенты

Maksim
19.04.2018
10:19:10

Adel
19.04.2018
10:19:54
someone.takeBall(this.ball); this.ball = nothing; ну както так...

Bohdan
19.04.2018
10:20:52

Adel
19.04.2018
10:21:16
так это ж действие. не геттер

Aleh
19.04.2018
10:22:14

Bohdan
19.04.2018
10:22:17
та то я так...
обычно всем просто лень писать дто для вьюшек

Roman
19.04.2018
10:45:12

Adel
19.04.2018
10:45:35
ну это мы разумеется про Write модели говорили.

Google

Roman
19.04.2018
10:46:32

Adel
19.04.2018
10:46:48
ну а как ты себе представляешь рид модель без геттеров?

Roman
19.04.2018
10:47:21
И не рид модель тоже никак
Ну типа агрегат то надо прочитать чтобы поменять

Adel
19.04.2018
10:48:01
агрегат сам себя поменяет

Roman
19.04.2018
10:48:11
И в зависимости от какого то состояния надо чего то сделать
Ну типа агрегат в зависимости от своего внутреннего состояния может по разному обрабатывать вызовы публичных методов
А чтобы это состояние получить..)) внезапно нужны геттеры)
Ну в шарпе по крайней мере
Можно конечно на приватных полях сделать и вообще без геттеров, но тогда при молейшем изменении полей - надо в конфиге ОРМки не забыть это поправить, и что то мне подсказывает что шансы выстрелить себе в ногу повышаются в разы и возводятся в степень, пропорциональную количеству агрегатов
И нахер так жить тогда
Лучше уж анемичные модели чем такое садомазо

Adel
19.04.2018
10:54:03
о ужас! ты изменил поля в базе данных и придется лезть в конфиг ORM? это кошмарно...

Roman
19.04.2018
10:54:54
Ну они ж приватные, соответственно снаружи их не видно, поэтому сидишь такой стропами описываешь, грустишь.
А когда геттеры есть - то во-первых ORM’ка сама их подхватит при наличии сеттера, ну либо можно через лямбду указать свойство и конфигу к нему. Ну и при рефакторинге, оно всё прекрасно переименовывается и не доставляет никаких проблем. Вывод: геттеры нужны.

Aleh
19.04.2018
10:57:51

Roman
19.04.2018
11:01:14
зачем это состояние получать?
Простейший кейс - изменение емэйла юзера. Есть свойство у User'а как bool EmailVerified, и при изменнии мыла на отличное от исходного нам надо:
- Собственно поменять мыло
- Установить EmailVerified в false
То бишь чтобы мыло поменять - его надо прочитать

Google

Adel
19.04.2018
11:02:22
ну так сделай changeEmail(newEmail)
и пусть агрегат все сделает

Roman
19.04.2018
11:03:30

Sergey
19.04.2018
11:03:44
геттеры это фу
+ доменный ивент сверху что бы было по чем отправлять email

Adel
19.04.2018
11:04:29

Sergey
19.04.2018
11:04:36
+ генерацию токена туда же можно запихнуть
или временного пинкода
или еще чего

Roman
19.04.2018
11:05:07
геттеры это фу
Геттеры в C# выглядят примерно так
public class User
{
public long Id { get; private set; }
public string Name { get; private set; }
}

Adel
19.04.2018
11:05:19
да. сделай private get