Алексей
Да и в большинстве ООП языков наследование очень даже используется.
andrew
Сейчас будет спор композиция против наследования?
Алексей
Так что "в ООП не принято использовать наследование" - это не верно.
Алексей
А вот что наследование является плохой практикой - это уже друго разговор.
Bohdan
Сейчас будет спор композиция против наследования?
давай перефразируем твой вопрос во избежание срача: "как мне реализовать наследование там, где его нет by design?"
Bohdan
и тут мы пришли к другому срачу: а зачем?
Maksim
то, что оно используется, или что оно есть, не значит ровным счётом ничего. Вон в пхп трейты тоже используют. Это не значит, что этот высер (трейты) чем-то оправдан
andrew
Для удобства
Viktor
Для удобства
Во всех случаях?
andrew
Во всех случаях?
Я не готов говорить за все случаи
Алексей
общепринятой? ты про википедию?) впрочем, холивар на эту тему профитнее вести в джава чатиках) никак не в го.
И про неё тоже. Да в любой книге по ООП, в любом ООП языке будет упомянуто наследование. Даже в Smalltalk.
andrew
Откуда я знаю какие у вас случаи)
andrew
В бизнес логике часто приходится использовать наследование
Viktor
Я не готов говорить за все случаи
Тогда для каких кейсов имеется ввиду "удобство"?
Bohdan
Для удобства
тогда зачем писать на языке, в котором нет наследования, если это тебе неудобно?)
andrew
Низкий порог входа
andrew
Относительно каких нибудь плюсов или джавы
Алексей
то, что оно используется, или что оно есть, не значит ровным счётом ничего. Вон в пхп трейты тоже используют. Это не значит, что этот высер (трейты) чем-то оправдан
Нет, это означает что практически в любом ООП языке (ну кроме Go) обязательно придётся столкнуться с наследованием.
Maksim
Нет, это означает что практически в любом ООП языке (ну кроме Go) обязательно придётся столкнуться с наследованием.
это связано лишь с низкими порогами входа :) никак не с тем, что это прям столп какой-то
Bohdan
без него можно жить вполне, да
Maksim
во множестве языков можно столкнуться с синглтонами. ну чёт такая себе логика
Алексей
это связано лишь с низкими порогами входа :) никак не с тем, что это прям столп какой-то
В C++ есть наследование. А у этого языка порог входа далеко не низкий. Так что порог входа тут не причём. А вот то, что наследоваие - это вполне привычный интсрумент, практически тот самый "столп" уже как раз причём. И синглтоны тоже будут попадаться. То есть такие вещи вообще проигнорировать просто не получится. Ну если только за пределы Go не вылезать никуда, кроме сишки.
Maksim
мой косяк, херово написал. я скорее не за язык вещал, а за этот самый мифический правильный ооп.
Алексей
Rust?
так его вроде в этом чатике не любят?
Maksim
проще сделать наследование, чем думать как иначе. Проще сделать синглтон, чем думать как иначе и т.д.
Алексей
мой косяк, херово написал. я скорее не за язык вещал, а за этот самый мифический правильный ооп.
Вообще это всё довольно расплывчато, субъективно и не формализованно. Так что можно спокойно говорить, что нет никакого определения "тру ооп"
Алексей
а что Go это ООП язык?
Кто-то считает, что нет. Я к примеру считаю, что да.
Алексей
Алан Кей вроде бы вообще выделял основным столпом посылку сообщений, которая вообще является лишней абстракцией фактически.
Aleksandr
так его вроде в этом чатике не любят?
У чатика нет официальной позиции по этому вопросу
freezlite
чатик неофициальный
elton
Самый безумный чат по яп
Алексей
А вообще меня сейчас помидорами закидают, но я не считаю наследование вселенским злом, а композицию спасением от вселенского зла.
elton
Из всех, в которых я нахожусь
Алексей
Самый безумный чат по яп
В каком смысле безумный?
Zver
И почему ООП считают сложным.
andrew
Изначально вопрос то был в том, удобнее ли реализовывать бизнес логику в ооп языках, нежели чем в недооп или в не ооп
Artem
тут люди дела делают прост
aadz
Изначально вопрос то был в том, удобнее ли реализовывать бизнес логику в ооп языках, нежели чем в недооп или в не ооп
Все зависит от умения, на самом деле. Кто-то может и космические аппараты на Fortran запускать. Ну, или уже умел...
aadz
А ядерные ракеты? Там до сих пор иногда софт чуть ли не на ADA. И нифига никакого ООП, а бизнес-логика - недецкая!
Алексей
Просто я ещё к примеру сталкивался с тем, что пришлось эмулировать наследование в Go и по другому никак нельзя было. Но насколько часто такая ситуация встречается - это вопрос, на который я не готов ответить.
aadz
Наследование - это не про Go, к счастью
andrew
Только я не эмулировал. Просто делал по другому
Алексей
Задача была очень специфическая.
Maksim
Это была явная необходимость или больше привычка из других ЯП?
нет необходимости в наследовании. И быть не может by design. так что больше привычка
Алексей
И эмулировал наследование я тоже очень специфично, чтобы сэкономить память. Короче не заморачивайтесь.
Andrei 🦉
Задача была очень специфическая.
когда привык к молотку, все кажется гвоздем, даже если в руках теперь дрель
Andrei 🦉
я в проектах на других языках с ООП очень редко видел его грамотное применение, как правило там была гигантская цепочка наследования, которая начинала разваливатся при любом вносимом изменении, так что отсутствие этого в го считаю за плюс
Алексей
нет необходимости в наследовании. И быть не может by design. так что больше привычка
Есть необходимость в полиморфизме. Практически всегда есть необходимость. И тут два стула - наследование с виртуальными методами или имплементация интерфейса. Обсуждать какой из этих стульев лучше и когда я не буду.
Evgeny
Парни, извините за флуд. У всех гугл и яндекс открываются ?
andrew
+
Алексей
я в проектах на других языках с ООП очень редко видел его грамотное применение, как правило там была гигантская цепочка наследования, которая начинала разваливатся при любом вносимом изменении, так что отсутствие этого в го считаю за плюс
Простите за занудство, но которая начинала разваливатся при любом вносимом изменении - это прямое нарушение SOLID (а точнее буквы O). Также этот пример показывает, что плохо делать гигантскую цепочку наследований, но насчёт коротких цепочек он ничего не говорит.
Nix
подскажите как прочитать файл, если он больше чем ram
andrew
Или побайтово
Andrei 🦉
Простите за занудство, но которая начинала разваливатся при любом вносимом изменении - это прямое нарушение SOLID (а точнее буквы O). Также этот пример показывает, что плохо делать гигантскую цепочку наследований, но насчёт коротких цепочек он ничего не говорит.
я всего лишь описал свой опыт работы с творчеством апологетов наследования, оно, как правило, выглядит именно как гигантская цепочка наследования, где для каждого метода добавляется свой миксин
Nix
Или побайтово
есть примеры?
Artem
хорошо, что я не знаю таких слов
andrew
есть примеры?
file, err := os.Open("file.ext") if err != nil { println(err) } defer file.Close() scanner := bufio.NewScanner(file) buf := make([]byte, 0, 1024*1024) scanner.Buffer(buf, 10*1024*1024) for scanner.Scan() { print(scanner.Text()) }
aadz
Парни, извините за флуд. У всех гугл и яндекс открываются ?
У меня пока открываются из Питера. Но, благодаря депутатке Яровой, скоро могут и перестать. :)
Алексей
То есть глубоко вложенная композиция конечно лучше глубокой иерархии наследования, но всё равно довольно печально на мой взгляд. Потому что опять же изменение в начале иерархии может затронуть и скорее всего затронет всех "потомков".
Roman
Знает ли кто про какую нибудь либу для проверки сложности пароля для реализации фидбэка пользователю о безопасности его пароля?
Artem
давай не будем, а?
вообще очень много было на эту тему, не понятно что ты имеешь ввиду