Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 December 01

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Во, вспомнил
Ещё одна проблема, которую позволяет решить мост - динамическая смена реализации. Пользователь расширил квадрат неравномерно и квадрат перестал быть квадратом? Никаких проблем, меняем ему реализацию, которая вычисляет площадь, и не надо пересоздавать сам объект
С застывшим в граните наследованием так не выйдет
Вы так говорите как будто теперь все на мостах нужно делать. В браузере вон DOM элементы наследуют от HTMLElement и это прекрасно решает свою задачу - дает возможность обращаться к множеству элементов как к HTMLElement не обращая внимания на то, каким конкретно элементом оно является - инпутом или дивчиком
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
Вы так говорите как будто теперь все на мостах нужно делать. В браузере вон DOM элементы наследуют от HTMLElement и это прекрасно решает свою задачу - дает возможность обращаться к множеству элементов как к HTMLElement не обращая внимания на то, каким конкретно элементом оно является - инпутом или дивчиком
Нет, не всё, и я такого не писал и не имел в виду
Тем более что мост не вступает в противоречие с наличием иерархии наследования, скорее наоборот, подразумевает её
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
👍👍 тогда хорошо
источник

Т

Тёмыч in NodeUA - JavaScript and Node.js in Ukraine
у меня в телеграмме папочка есть, называется NodeJs, и состоит более чем наполовину из разных каналов Метархии. Это норма?
источник

q

qkation@DevelopQKati... in NodeUA - JavaScript and Node.js in Ukraine
Тёмыч
у меня в телеграмме папочка есть, называется NodeJs, и состоит более чем наполовину из разных каналов Метархии. Это норма?
same
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Ты вроде подменяешь понятия (относительно того, кто и что должен обосновать)

Для чего нужен мост описано в гоф - отделяет абстракцию от реализации. Это и нужно, отделить интерфейс, который может быть общим, от реализации, которая для кого-то будет общая, для кого-то нет. Тут тебе и общий интерфейс, и нет дублирования кода. Я думаю, ты просто не грокнул паттерн, и потому отвергаешь его даже без обсуждения

А ещё ты потратил уже много времени и букв, но по сути своих претензий ничего пока не сказал ;)

По поводу твоего замечания про наследование в целом - я до ноды писал на плюсах (в основном, но не только), и к наследованию априори отношусь с подозрением, потому что там слишком много тонкостей: виртуальное наследование, или ромб при множественном наследовании, переопределение (и, следовательно, сокрытие) невиртуальных методов, и прочая муть. Когда фанаты выстраивают свои конструкции, висящие на соплях, и всё это ненадёжное сооружение начинает разрастаться и приводит к трудно определяемым ошибкам в лучшем случае на этапе компиляции, они сами на собственном опыте постигают описанное ещё мейерсом простое правило: предпочитаете композицию наследованию. Рекомендую почитать, скорее всего это в первой его книге было, где фигурирует число 55
В других языках типа жавы или Шарпа попробовали решить проблемы наследования по своему, но не сказать, что им это хорошо удалось

А ещё можно смотреть на наследование не только как на способ избежать дублирования кода, а как на способ обеспечить полиморфизм (поэтому фраза про три столпа ООП несколько искуственна, потому что дублирует сущности). Способов избежать дублирования кода масса, и они есть даже в кондовом процедурном программировании на каком-нибудь бейсике. Равно как и способов обеспечить полиморфизм. Так что и с этой точки зрения не стоит зацикливаться на наследовании:
- его можно заменить
- оно не решает ни одной проблемы, которую нельзя решить без него
- оно привносит проблемы

Всё, хватит аргументации?
Понятно, что паттерны придумали не дураки и ни от хорошей жизни, связанной с наследованием. Но в книжках или у мамкиных блогеров хеловордные примеры с удобными для паттернов предметными областями. Паттерн наблюдатель? Отлично, сделаем пример с наблюдением за погодой. И в таком духе... А в жизни приваливает предметная область с такими кейсами, которые тебе в жизни не снились, и начинается натягивание совы на глобус. Тут простая школьная геометрия, а не кровавый интерпрайс, а уже началась смехопанорама с созданием объектов, типа вычислитель площади круга отдельно от самого круга... При том, что опровергнуть простоту наследования от неправильного многоугольника, который по сути является математическим движком для наследников, где остается сделать какую-то мелоч, вроде контроля за количества вершин, переданных в конструктор, ты толком не можешь. Попросил тебя разложить пататерн по его состовляющим из Википедии в контексте фигур, ты написал кучу страшных слов вместо примера. Если не знаешь всех предметных областей, где метода может быть действительно целесообразно, не проник в мировой абсолют, так и нефиг говорить, что от наследования нужно избавляться в пользу какого-о там бла-бла-бла паттерна, если не подходит, то сорян.
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Не ссорьтесь ) В общем радикально избавляться от наследования никто не говорит еще. Делайте как проще в вашем конкретном кейсе. Чем проще код - тем всем легче. Сильно наворачивать паттернами с мыслью “сделаю заранее, на случай возможного расширения” не рекомендуется принципом YAGNI (You aren’t gonna need it)
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
У нас в проекте был кусок какого-то странно навернутого кода. Мы просто его не трогали год. Потом понадобилось трогать - ну просто прилепили в класс функций. А потом только поняли что это человек паттерн делал (давно). Блин ну хоть бы подписал в комментах что это паттерн а не странная супер-замороченная непонятно почему ерунда (судя по коммитам тот код прошел через несколько рук и не все поняли что автор имплементировал паттерн)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Интересно, а есть паттерн "фабрика паттернов"?
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Тёмыч
у меня в телеграмме папочка есть, называется NodeJs, и состоит более чем наполовину из разных каналов Метархии. Это норма?
meddit, какой-то, получается. Каких каналов мы ещё не знаем?
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Вопрос знатокам: при создании процесса с помощью чайлд процесс создаётся новый ивент луп и стек? или по прежнему он один на всё приложение?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Miseo
Вопрос знатокам: при создании процесса с помощью чайлд процесс создаётся новый ивент луп и стек? или по прежнему он один на всё приложение?
1.
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
То есть если у меня сработала функция бесконечного синхронного перебора, то всё приложение замрёт? и не важно сколько там дочерних процессов?
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Я просто тут на сайте прочитал:

Node.js работает в однопоточном режиме, но для обработки параллелизма использует управляемую событиями парадигму. Это также облегчает создание дочерних процессов для параллельной обработки многоядерных систем на базе процессоров.
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Miseo
То есть если у меня сработала функция бесконечного синхронного перебора, то всё приложение замрёт? и не важно сколько там дочерних процессов?
Там где эта функция сработала, то и "замрет". Остальное будет работать так как надо.
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Вот если у меня 20 ядер, проце, то в теории я могу создать 20 процессов в одном приложении и будет как бы паралельно. Если один процесс делает вечный синхрнонный цикл, то другие должны работать как бы независимо
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Miseo
Я просто тут на сайте прочитал:

Node.js работает в однопоточном режиме, но для обработки параллелизма использует управляемую событиями парадигму. Это также облегчает создание дочерних процессов для параллельной обработки многоядерных систем на базе процессоров.
Ну в современном мире тут из актуального только первые 2 слова. Остальное - спорное утверждение.
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Там где эта функция сработала, то и "замрет". Остальное будет работать так как надо.
то есть если у меня будет 20 процессов в одном приложении тогда один из них даже если и заморозится 19 будут работать как и ожидается ?
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
Обработай многоядерную систему, будь мужиком
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Kostyantin Randomname
Обработай многоядерную систему, будь мужиком
Не понятно…
источник