💡 SOLID принципы для JavaScript, TypeScript, Node.js и асинхронного программирования

preview_player
Показать описание
🔹 Принцип единственной ответственности - SRP (single responsibility principle)
🔹 Принцип открытости/закрытости - OCP (open-closed principle)
🔹 Принцип подстановки Лисков - LSP (Liskov substitution principle)
🔹 Принцип разделения интерфейса - ISP (interface segregation principle)
🔹 Принцип инверсии зависимостей - DIP (dependency inversion principle)
Рекомендации по теме
Комментарии
Автор

SOLID давно пора переосмыслять. Люди справедливо теряются в расшифровках, а также упарываются в теорию, не осознавая что на практике у них все не так солидно. Все в мире работает не абсолютно, а в меру. И принципы, возведенные в абсолют наоборот, вредят реальным проектам. Как говорят китайцы - настоящее знанее - это знание достаточности. И мудрость разработки заключается в осознавании уместности и меры следования принципам и понимании где их нужно нарушить и ради чего. Тогда разработка будет живая, а значит адаптивная, гибкая и разумная. А значит еще и гуманная, внезапно)

oeaoo
Автор

А есть в формате статьи?
Формат статьи намного удобнее, ведь можно легко возвращаться к непонятным местам, видеть структуру, и так далее.
Там качество звука не влияет на восприятие.
Информация-то очень крутая, хочется такого больше в мире js.

abbze
Автор

"Мы описываем интерфейс, но вся асинхронная составляющая кода теряется.<...> У нас для асинхронного кода нет никакого способа это декларативно описать – как будет работать промис, чтобы прочекать его правильное поведение". А зачем чекать? Идея интерфейса как раз заключается в сокрытии внутренней реализации. Для клиента интерфейса нужно знать как подписаться/отписаться на событие, которое произойдет в будущем, и его даже не должно волновать, будут ли там вообще промисы и как устроены микротаски. Не нравятся промисы, можно задействовать RX. В основе любой реактивной библиотеки лежит паттерн Observable, чьи интерфейсы элементарны и понятны. Не нравится RXjs, можно написать свой минимальный набор реактивных команд на тайпскрипте и дженериках.

kai.hexenzorn
Автор

Не понимаю, чем так не угодили интерфейсы тайпскрипта. Пример DI принципа:
interface IEncoder {
encode: () => any
}

class FileEncoder implements IEncoder {
encode() {...}
}

class FileStorage {
private readonly _encoder: IEncoder
constructor(encoder: IEncoder) {
this._encoder = encoder
}
}
Модуль верхнего уровня (FileStorage) и нижнего (FileEncoder) зависят от абстракции – IEncoder. Кстати, под абстракциями в ооп мы подразумеваем интерфейсы, абстрактные классы и обобщенные типы. Поэтому "конкретная абстракция" – это оксюморон.

kai.hexenzorn
Автор

Здравствуйте Тимур! Какую документацию по JS вы можете посоветовать новичку, MDN или же его аналог doka? Заранее признателен за ответ

RussellCrowe-rdxi
Автор

Сколько же у вас свободного времени такие ролики делать

johnstrayk
Автор

‼⏳ Сподобалась ідея зробити семінар і взяти конкретну задачу щоб chatGPT вирішував її в різних підходах / стилях, можливо мовах 💯

KvN-UA
Автор

Кстати странно, что empty element приобразовывается в undefined а не в null

somnium
welcome to shbcf.ru