
D
27.09.2016
20:56:30

Vladislav
27.09.2016
20:56:49
о, на гомоиконность набрасывают
приятно
раз набрасывают, значит знают

Google

Vladislav
27.09.2016
20:57:17
ну или хотя бы слышали

D
27.09.2016
20:57:30
Я активный открытый гомоиконист!

Vladislav
27.09.2016
20:57:48
а бывают пасивные?
и закрытые?

D
27.09.2016
20:58:03
бывают латентные

Nick
27.09.2016
21:18:20
Что эт за слово такое

Alexey
28.09.2016
01:48:40
можно же не читать 500+ сообщений?

Nikolay
28.09.2016
01:49:35
По вкусу, там мини срач

Alexey
28.09.2016
01:50:22
я пролистал. опять доказывали что типы это хорошо и про то почему скалистам не нравится json как мапа :)

Aleksei
28.09.2016
04:09:16
ну и чота там про груви всплывало

Nick
28.09.2016
06:26:09
Жаль тут Баруха нет, а то бы про груви было больше

Andrey
28.09.2016
06:27:26
достаточно про груви

Alexey
28.09.2016
06:36:37
Более чем?

Google

Alexey
28.09.2016
06:36:51
Без "?"

Andrey
28.09.2016
06:37:11
давайте снова про скалу и церковь

Aleksey
28.09.2016
06:55:47
Ох.

Denis
28.09.2016
07:21:27
Две вещи греют меня в этом мире, горящая церковь и успешная компиляция.
Так?

Aleksei
28.09.2016
07:22:01
(б)Ох!

Anatoly
28.09.2016
07:38:11
* успешное прохождение тестов

Ivan
28.09.2016
07:38:37
которых нет, как и бога ?

Anatoly
28.09.2016
07:38:54
Как же без тестов

Denis
28.09.2016
07:39:24

Ivan
28.09.2016
07:40:10
лет?

Anatoly
28.09.2016
07:41:29
Это если коду нет 18ти

Aleksey
28.09.2016
07:58:01
16ти

Anatoly
28.09.2016
08:08:49
что то мне подсказывает из названия чата, что мы сейчас непринципиальную разницу ищем)

Aleksei
28.09.2016
08:27:50
уровень шуточек опускается до лепрочки =)

Aleksey
28.09.2016
08:30:30
главное что бы до груп из вконтактика не опустился.
хотя конечно шутки про варга и церковь никогда не надоедают.

D
28.09.2016
08:31:11
http://rustelegraph.ru/photo/all/19852.jpg

Viacheslav
28.09.2016
08:43:36
Друзья, важно ваше мнение, вот есть код, хочется ли вам в нём что-то улучшить, что именно, в каком месте, что в текущем коде режет глаз?https://gist.github.com/xnull/bbcf46bfa72e3e403654e3fdf13545e6

Google

Viacheslav
28.09.2016
08:44:34
хочется поговорить за дизайн кода в Фу стиле )

Sovent
28.09.2016
08:45:32
в этом коде мне режет глаз класс Business Logic

Ivan
28.09.2016
08:45:45
val dao = createDaoImpl()
dependency injection надо вместо

Viacheslav
28.09.2016
08:46:03
ну это да, само собой

Aleksey
28.09.2016
08:46:30
Публичные методы должны должны иметь указанный тип возврата, как мне кажется. А в остальном код как код.

Viacheslav
28.09.2016
08:46:51

Aleksei
28.09.2016
08:46:58
плюсую за публичные методы

Sovent
28.09.2016
08:47:05
Business Logic - это вообще что с точки зрения предметной области? В ООП важна абстракция, какую сущность олицетворяет класс BusinessLogic?

Viacheslav
28.09.2016
08:47:21
то есть имя класса?

Sovent
28.09.2016
08:47:24
да

Aleksey
28.09.2016
08:47:44

Sovent
28.09.2016
08:47:49
ну неверное имя класса - это чаще всего неверная модель, а не просто лингвистические затыки

Viacheslav
28.09.2016
08:48:00
ну в данном случае я подразумеваю что класс назван как надо, просто для простоты так назвал для примера

Sovent
28.09.2016
08:49:07
ну тогда норм, всё слишком утрировано, непонятно, что оценивать

Viacheslav
28.09.2016
08:49:52
метод foo не хочется его как-то переделать?
да и вообще класс BusinessLogic

Aleksei
28.09.2016
08:50:38
ну кстати волне себе нормальный код. кому то надо не функторы хуюнкторы, а ехать =)

Viacheslav
28.09.2016
08:50:51
))

Ivan
28.09.2016
08:52:09

Sovent
28.09.2016
08:52:25
метод foo не хочется его как-то переделать?
ну если придираться, то хочется. я, возможно, сильно впрягаю за DDD, но идентификатор сущности Long - не слишком Verbose, стоит выделить для этого отдельный ValueObject.
достаёшь некую entity, а публикуешь её в EventBus. нормально только в случае, если твоя Entity это какой-то эвент, но это какой-то странный эвент сорсинг получается

Google

Aleksei
28.09.2016
08:55:32
мы когда то вот так делали https://github.com/unicorndevru/images/tree/master/src/main/scala/images

Sovent
28.09.2016
08:55:43
ну да, и Entity string, та же беда, в OOPStyle не место одержимости примитивами

Viacheslav
28.09.2016
09:00:23
Я к чему это про foo метод разговор завёл, вот в скале есть функторы хуюнкторы
и в правильных книжках и мануалах нас учат, что надо пользоваться функциями везде и тогда
жизнь наладится.
В данном коде, если писать по каноничному в ФП (Фу - можно я буду называть это Фу стилем? ничего не могу с собой поделать), то должно на мой взгляд получиться как-то так (в псевдокоде):
val findEntity = findEntityFunction(entityId)
val publish = publishMessageFunction(message: String)
def foo(entityId) = findEntity then publish
ведь так?

Denis
28.09.2016
09:09:00
какой тип у findEntityFunction?
ну добавлять Function к названию функции это redundant

Admin
ERROR: S client not available

Viacheslav
28.09.2016
09:10:25
по идее это должно быть чтото типа
def findEntityFunction(dao: Dao)(id: Long): String = dao.findById(id);
я добавил чтобы понятно было из названия

Denis
28.09.2016
09:12:14
а у publishMessageFunction какой тип?

Viacheslav
28.09.2016
09:13:16
def publishMessageFunction(eventBus: EventBus)(message: String): Unit = eventBus.publish(message)

Denis
28.09.2016
09:16:18
def findEntity: String => String = ???
def publishMessage: String => Unit = ???
def findAndPublish: String => Unit = findEntity andThen publishMessage

Viacheslav
28.09.2016
09:17:19
да, именно! но вот если я начну писать код в таком стиле боюсь.... просто боюсь)
слишком много косвенности на ровном месте получается

Denis
28.09.2016
09:17:57
ну в реальной жизни у тебя будет def findEntity: String => Future[Option[String]]
так что так ты писать все равно не будешь )
и def publishMessage: String => Future[Unit]

Ivan
28.09.2016
09:19:06
Вот такой вопрос кстати, кто в scala проектах, пользуется "паттерном" DAO, и если вы им не пользуетесь, то как у вас организован код работы с бд?

Aleksei
28.09.2016
09:20:01
выше найдите мою ссылку на гитхаб
прямо немножко выше

Viacheslav
28.09.2016
09:20:30
и там про дао или про Фу стиль?

Google

Denis
28.09.2016
09:20:55
что такое DAO и чем это отличается от трейта с методами или Free DSL ?

Aleksei
28.09.2016
09:21:02
про всякое там короче
просто как пример

Ivan
28.09.2016
09:22:50

Denis
28.09.2016
09:24:46
ад и погибель
это объект, который предоставляет абстрактный интерфейс
все :)
нужен интерфейс - сделай его

Viacheslav
28.09.2016
09:30:02
в данном случае eventBus и прочие дао и сервисы будут "путешествовать" по сигнатурам наших методов в системе
и половина методов будет карированными
в этом случае class x(infrastructureObj: SomeObj, infrastructureObj2: SomeObj) {def foo() = infrastructureObj.toDoSomething()}выглядит как выход
но мы опять скатываемся в ооп и оборачиваем наши функции объектами
вобщем для меня остается загадкой как писать без многих НО по настоящему в фу стиле


Vladimir
28.09.2016
09:38:42

Denis
28.09.2016
09:41:19
для начала не называть ФП фу стилем
реально слух режет
никто не заставляетй писать только на функциях