
Roman
21.07.2016
11:42:11
qq all

Eugene
21.07.2016
11:44:33
привет
помню такое приветствие последнее было гдет года 3 назад, в кс так здоровались

Антон
21.07.2016
11:45:58
git grep -E '(if|unless) [a-zA-Z]* = ' | wc -l
4

Google

Антон
21.07.2016
11:46:43
но это не потому что рубокоп
а потому что return unless
а еще if = мутирует часто - тестировать трудно

Aldar
21.07.2016
11:51:35

Иван
21.07.2016
11:56:34
всем привет, тут недавно был разговор на тему solid и руби ну и там было сказано что не надо придерживаться d так как в рубях нет абстрактных классов. А я тут книжку по рубям почитываю и нашел в ней пример абстрактного классса в руби - http://pastebin.com/SKAChXbG
так это в рубях они какие то плохие не подходящие под принцип Dependency Invertion
или как это понимать?

Антон
21.07.2016
11:57:40
кумиров себе не нужно создавать и все
не получается D - забить

ojab
21.07.2016
12:00:16
обычный класс
и даже реализует метод greet для своих инстансов

Aldar
21.07.2016
12:01:44
окей, создам класс, и во всех методах буду исключения кидать - дескать сделай реализацию, вот и будет рубишный абстрактный классс
но по сути это обычный рубишный класс

Антон
21.07.2016
12:02:43
NotImplemented?

Google

ojab
21.07.2016
12:03:20
инстатсы абстрактного класса, м-м-м
хотя new тоже можно оверрайднуть, да

Stanislav
21.07.2016
12:04:08
а зачем вам абстрактные классы в руби то?

ojab
21.07.2016
12:04:36
присоединяюсь к вопросу

Rafkat
21.07.2016
12:05:18
патамушта в пхп есть, а в руби нету

Антон
21.07.2016
12:06:45
пусть приводит, в пхп вообще нет ооп

Иван
21.07.2016
12:07:09
дак я вообще начинающий я не смогу сейчас ответить почему и зачем, просто недавно была эта тема в чате и сейчас попалась в книжке, решил уточнить

Антон
21.07.2016
12:07:33
вброс,
но в каждой шутке есть доля шутки

Aldar
21.07.2016
12:10:38

Nikolay
21.07.2016
12:11:33
return File.exist? path
идиоты0с

ojab
21.07.2016
12:12:34
а в руби нет функций и живут же как-то

Konstantin
21.07.2016
12:13:39
а вот и есть
авот отстутствие интерфейсов в рубях или аналогов это зашквар полный

Aldar
21.07.2016
12:14:01
в хаскеле есть штука помощнее - type class

Konstantin
21.07.2016
12:14:25
потому что ты вообще в либе не можешь заставить того, кто ее юзает поддержать твой интерфейс
в итоге все обмазываются метапрограммированием и всякими multi_json
и патчат Object
поубивал бы
https://github.com/ruby-grape/grape-entity/blob/v0.4.8/lib/grape_entity.rb#L2

Google

Konstantin
21.07.2016
12:15:38
как не№й делать
я про интерфейсы

Иван
21.07.2016
12:16:25
интерфейс это что то типо абстрактного класса у которого не может быть объектов класса?

Konstantin
21.07.2016
12:16:43
вон выше дали пример с хаскелем

Aldar
21.07.2016
12:16:50
я про интерфейсы
ну так создай класс, где new выкидывает исключения, и методы тоже
можешь считать что это абстрактный класс
или интерфейс
правда можно будет отнаследоваться только от 1 интерфейса)

Konstantin
21.07.2016
12:19:27
@hardliner ок, как мне заимплементить на Array #to_json таким образом?

Aldar
21.07.2016
12:21:30
в лиспе

Konstantin
21.07.2016
12:21:42
про ооп я ничего не могу сказать
саму идею ооп уже извратили так

Konstantin
21.07.2016
12:21:52
и трактуют как хотят
что я даже не уверен, что ты вкладываешь в это слово

ojab
21.07.2016
12:22:23
в лиспе
в каком из и почему это функциональный ЯП?

Konstantin
21.07.2016
12:22:37
наследование, полиморфизм инкапсуляция? объекты? посылку сообщений?
вот erlang более ооп чем ваши эти руби кек

Admin
ERROR: S client not available

Aldar
21.07.2016
12:24:34
функциональный язык это язык, поддерживающий лямбда калькулус

Google

Aldar
21.07.2016
12:24:51
где есть функция это объект первого класса
js - функциональный язык

Антон
21.07.2016
12:26:21
а можно я опять вброшу: зачем js-у ооп, зачем php ооп, если это функциональные языки

Konstantin
21.07.2016
12:26:29
руби тоже функциональный )
дисфункциональный

Иван
21.07.2016
12:27:01
я походу своим вопросом какую то больную тему затронул, извиняюсь

Aldar
21.07.2016
12:27:34

ojab
21.07.2016
12:27:40

Aldar
21.07.2016
12:28:08
есть проки и лямбды
но в жс ими удобнее пользоваться, как то органичнее

Nikolay
21.07.2016
12:30:24
я хнаю несколько мега годных програмеров на РНР и Питоне

Pavel
21.07.2016
12:30:31
Очень очень сильно. Код с ними более наглядный и статичный, легче навигация, леге понять что делает код и в каких границах.
Легче отладка, легче статический анализ, больше контроля ошибок.

Nikolay
21.07.2016
12:31:01
так вот, когда ты знаешь оренительно язык и его плюсы минусы и особенности с самых его первых версий, ты сделаешь конфетку

Aldar
21.07.2016
12:32:32
Как насчёт модулей, методы которых только и делают что бросают исключения?
заинклудил модуль, а потом будь добр сделай реализацию

Pavel
21.07.2016
12:36:27
1) Отладка проще, т.к. в процессе ты сразу видишь по тайпхинтам, какие объекты куда передаются и какую структуру имеют.
2) Статический анализ проще т.к. анализатор сразу видит объект какого интерфейса передается в аргументы метода, и может много выводов из этого сделать
3) Больше контроля ошибок, так как из-за тайпхинтинга можно отловить практически все ошибки, когда в аргументы передается что-то не того класса или null например.

ojab
21.07.2016
12:37:20
статический анализ в рубях посасывает, да

Aldar
21.07.2016
12:37:29
лол, го тогда на хаскель
там по сигнатуре функци можно делать вывод о том есть ли сайд эффекты при её выполнении

Google

Антон
21.07.2016
12:38:25

ojab
21.07.2016
12:38:47
это отсос

Aldar
21.07.2016
12:39:36
таким образом можно понять делает ли тот или иной код операции ввода вывода даже не смотря его реализацию

Антон
21.07.2016
12:39:40