
Timur
10.01.2017
14:41:12
Но можно.
Через reflection механизм.
Конкретной платформы.
Но это гемор.

Google

Phil
10.01.2017
14:42:12
я даже слов таких не знаю

Timur
10.01.2017
14:42:35
Хорошо, когда ты поправил баг из баг трекера твоего проекта, то что ты делаешь, чтобы баг в будущем опять не вылез?

Phil
10.01.2017
14:42:53
да понятия не имею
я таких проектов не делаю. наверное что-то с этим делают

Kirill
10.01.2017
14:46:07

Timur
10.01.2017
14:48:05

Phil
10.01.2017
14:48:15
еще один ООПшник?
обрати внимание - явист. вот они свою жабу за собой как писаную торбу таскают

Kirill
10.01.2017
14:48:41

Timur
10.01.2017
14:48:55
конечно есть
А как тогда пользователи (необязательно end user'ы в привычном их понимании, а скажем end developers твоего middleware кода) тебе сообщают о багах?
Как производится decoupling на pure FP?
Я ведь не декларировал, что ООП подход единственно верный.

Google

Quet
10.01.2017
14:50:34
с pure fp ты явно каналом ошибся.. )
где го и где pure fp....

Timur
10.01.2017
14:51:21
с pure fp ты явно каналом ошибся.. )
Хорошо, люди сказали, что подходы ООП не работают. Мне и стало интересно при помощи каких подходов они тестируют код и отвязывают его внутренние части друг от друга. ?
Интересна ведь дискуссия.
И кто как делает.

Quet
10.01.2017
14:52:17
велосипедят все тот же IoC но руками и потом себе в этом не признаются

Phil
10.01.2017
14:52:30
О чем эти люди вообще?

Kirill
10.01.2017
14:52:55

Denis
10.01.2017
14:52:56
с чистым пюр все зависимости будут прокидывать в функцию :) но вообще не делал этого с fp

Quet
10.01.2017
14:53:15
ну pure это не про го )

Denis
10.01.2017
14:53:39
да и что мешает в пюре создать структуру

Kirill
10.01.2017
14:53:43

Timur
10.01.2017
14:53:45

Quet
10.01.2017
14:54:01

Timur
10.01.2017
14:54:04
Или как это правильно назвать.
Ну, я не силён в терминологии ФП.

Kirill
10.01.2017
14:54:25
Пайк давно экспериментирует с функциональщиной. может, что-то вкрутит.

Denis
10.01.2017
14:54:38
{:ok, conn} = AMQP.Connection.open
{:ok, ch} = AMQP.Channel.open(conn)
AMQP.Queue.declare(ch, "hello")
sending(ch)
AMQP.Connection.close(conn)

Quet
10.01.2017
14:54:41

Denis
10.01.2017
14:55:06
ch и есть нужная структура с конектом и прочим

Google

Quet
10.01.2017
14:55:18
если то что в го называется “экспериментирует с функциональщиной” то до текущего state of art он будет это лет 50 тащить

Denis
10.01.2017
14:55:24
так что нет проблем

Kirill
10.01.2017
14:55:26

Denis
10.01.2017
14:55:27
ООП о другом
:)

Timur
10.01.2017
14:56:29
Ну и так далее.

Quet
10.01.2017
14:56:57
руками тащи

Timur
10.01.2017
14:57:33
руками тащи
А если хочу одну реализацию подсовывать в 100 500 местах по коду? ?
Grep'ать?
Или factory function мутить? ?

Quet
10.01.2017
14:58:06
factory и опять же руками )

Kirill
10.01.2017
14:58:06

Denis
10.01.2017
14:58:11
для этого есть протоколы, бихеверы и прочее
можешь мокать как угодно

Timur
10.01.2017
14:58:40

Denis
10.01.2017
14:58:51
как интерфес в го

Timur
10.01.2017
14:58:57
А, ок.

Phil
10.01.2017
14:59:11
я что-то тоже не понял.
Ну я на самом деле примерно понимаю. Жаба и плюсы они ынтырпрайз. Т.е. это четкие стратегии и методики. Не всегда оптимальные. Но всегда чОткие. В этом даже что-то есть. Хочешь ты не хочешь, а твой год будет разрабатываться и тестироваться по идентичным методикам. И это даже хорошо.
Ну и обвязка ООП порождает такое монструозное окружение. С крутыми ынтырпрайзными словами. В которые начинают верить и гордиться. Ну вот мы и видим

Denis
10.01.2017
14:59:46

Google

Quet
10.01.2017
15:00:12

Kirill
10.01.2017
15:00:14

Timur
10.01.2017
15:00:16
?

Phil
10.01.2017
15:00:43

Kirill
10.01.2017
15:01:01

Denis
10.01.2017
15:03:05

Phil
10.01.2017
15:04:12

Alexey
10.01.2017
15:04:20

Phil
10.01.2017
15:04:54

Admin
ERROR: S client not available

Alexey
10.01.2017
15:05:20

Phil
10.01.2017
15:06:36

Quet
10.01.2017
15:06:43
он хотел готовое решение для IoC в го

Alexey
10.01.2017
15:06:56

Timur
10.01.2017
15:06:56

Phil
10.01.2017
15:07:14

Quet
10.01.2017
15:07:28

corpix
10.01.2017
15:08:54
Рефлект это компенсация, которую платят за отсутствие алгебраических типов данных(

Denis
10.01.2017
15:09:04
нет ничего лучше
myInterceptor.dependency1 = dependency1
myInterceptor.dependency2 = dependency2
myInterceptor.dependency3 = dependency3
myInterceptor.DoMyWork()

Google

i
10.01.2017
15:09:34
если сделать так:
select {
case act <-q
}
то без default это будет такое же блокирующее чтение из канала?

Denis
10.01.2017
15:10:26
да

i
10.01.2017
15:11:24
теперь понятно что за 3 дня отжирало 17 Gb ram

Denis
10.01.2017
15:12:55

Alexey
10.01.2017
15:17:56
эээээ.... поясни на пальцах
Ну типа, в ООП это что-то типа того. Есть у меня класс, который должен забирать из БД данные, обрабатывать и класть в файлик, например. И у него внутри метод,
doAll() {
bd = BD()
f = File()
data = bd.getData()
f.put(data)
}
И вот этот метод не протестировать юнит-тестами без базы и файла реального.
А можно сделать так:
doAll(bdInterface, f fileInterface) {
data = bdInterface.getData()
f.put(data)
}
И ему уже можно всё, что угодно скормить вместо базы и файла, заглушки какие-нибудь.
Или можно в конструкторе класса давать ему интерфейс бд и файла. И потом через this их дёргать.
В джавах вроде для этого можно всяких xml-штуки писать, чтоб оно само делалось, или всякие фабрики строить.

Phil
10.01.2017
15:25:07
Спасибо

Quet
10.01.2017
15:28:21
вот эти интерфейсы их можно передавать в конструкторе (DI руками) но в джавах можно в классе поставить нужные аннотации у полей и контейнер вставит нужные реализации сам (когда будешь создавать свой класс)

Alexey
10.01.2017
15:35:05
Есть, кстати, годная книжка Michael Feathers - Working Effectively with Legacy Code, про вот всякую эту связность кода, тесты и прочее.

Denis
10.01.2017
15:42:04
зашло конечно

Quet
10.01.2017
15:46:55
должно было быть php :)

Denis
10.01.2017
15:52:01
для java появляются всяки скалы, кложуры, котлины, для гошки гудланг, один, для джс, тайпскрипт, elm
почему я до сих пор не услышал о функциональном языке, который транслируется в php
да и не обязательно fp

Quet
10.01.2017
15:52:53
к слову о js, самое кошерное функциональное там purescript

Denis
10.01.2017
15:53:39
я не увидел плюсов овер elm, правда давно сравнивал

Quet
10.01.2017
15:54:04
ну тайпклассы? composable effects?
как язык он конечно такой.. “правильный хаскель”
но элму тут пошла на пользу диктатура и удалось избежать ситуации “5 разных биндингов к реакту”

Timur
10.01.2017
15:55:05
Для HHVM правда.
Но это ООП конечно.

Denis
10.01.2017
16:07:55
elm решает конкретную задачу - ui, он и проще, и тулчаин помощнее, вывод ошибок изумительный
что там пюрскрипт решает я пока не знаю, может позже уделю ему время, есть еще всякие ghcjs