170 похожих чатов

Пара общих вопросов: Каковы недостатки реализации наследования в Go через embedding? Чем

отличаются в поведении небуфферизированный канал и канал с буффером размера 1?

25 ответов

20 просмотров

Недостаток в том, что встраивание — это не наследование. Он не работает как наследование

небуферизированный создается с размером 0. ну а разница как между буф и небуф каналами)

И принцип Лисков мягко говоря не про это

🏳️ Phil Kulin
И принцип Лисков мягко говоря не про это

superclass object should be replaceable with a subclass object Это принцип Лисков, и именно про это я и писал. Встраивание не позволяет нам нигде пропихнуть результат через аргументы, где принимался как аргумент "родитель"

Elmanov Anton
superclass object should be replaceable with a sub...

если это встраивание интерфейсов, то кое где позволяет

Elmanov Anton
superclass object should be replaceable with a sub...

Это не принцип Лисков. На английском он звучит как "Let {\displaystyle \phi (x)}\phi (x) be a property provable about objects {\displaystyle x}x of type T. Then {\displaystyle \phi (y)}{\displaystyle \phi (y)} should be true for objects {\displaystyle y}y of type S where S is a subtype of T"

ООП в целом мало имеет отношения к прицепу барбары лисков, именно поэтому у всех такие трудности с пониманием что это такое

Так будет в читаемом виде точка зрения донесена?

Leonid
ООП в целом мало имеет отношения к прицепу барбары...

ну эо такое правило: при расширении базового типа наследованием следует сохранять совместимость с базовым типом. сохраняйте обратную совместимость, короче

Leonid
ООП в целом мало имеет отношения к прицепу барбары...

Его почему-то пытаются с SOLID занести в C++/Java и коеят похожие слова. Вот прямо сейчас легкое гугление показало

Elmanov Anton
Так будет в читаемом виде точка зрения донесена?

Это не точка зрения. Это была прямая цитата.

🏳️ Phil Kulin
Это не точка зрения. Это была прямая цитата.

а разве liskov substitution это не про контракты?

Artur Karapetov
нет 😄

Ну тогда возвращаюсь к своей вопросу.

вот LSP type Parent struct {} func (p *Parent) Go() {} type Child struct { Parent } func test(obj) { obj.Go() } func main() { test(parent{}) test(child{}) }

https://dave.cheney.net/2016/08/20/solid-go-design У Dave Cheney тут в том числе про Liskov Substitution Principle

Не надо постить сюда скриншоты кода и аудиосообщения. Долго – это хорошо, потому что пока делаешь небольшой пример, чтобы вынести в плейгроунд – проблема часто находится

Alexey Palazhchenko
Не надо постить сюда скриншоты кода и аудиосообщен...

да, а как быть с вопросами, которые не касаются напрямую кода, например утренняя проблема с докерфайлом, проблемы с архитектурой. Ну и было же включено, все было ок, вы сами написали, что причина в дикпиках) за аудиосообщения - бан, тут согласен полностью Плюс, как вариант, можно ограничить загрузку не картинками (превью) а файлами - аналогично ссылками на файлопомойки будет

Timur Sharapov
https://dave.cheney.net/2016/08/20/solid-go-design...

Because io.Reader‘s deal with anything that can be expressed as a stream of bytes, we can construct readers over just about anything; a constant string, a byte array, standard in, a network stream, a gzip’d tar file, the standard out of a command being executed remotely via ssh. And all of these implementations are substitutable for one another because they fulfill the same simple contract.

Petr Filippov
а разве liskov substitution это не про контракты?

Есть тип А, вы создаете подтип Б от А, любая функция которая работает с А может использовать Б тк это подтип, все. Весь принцип. В контексте ооп это не очень понятно, потому что в ооп когда вы наследуете вы создаете супертип с большим функционалом, те все наоборот.

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта