HowProgrammingWorks - JavaScript and Node.js Programming
6.32K subscribers
310 photos
7 videos
1 file
754 links
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/MetarhiaHPW 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Download Telegram
Признак хорошо спроектированного контракта (будь то интерфейс, сигнатура, абстрактный класс, фасад, тип, API…) — это когда:
Понятно, как использовать, не заглядывая в исходники. Достаточно имен и, в крайнем случае, тестов или примеров.
Не требует трассировки вызовов в реализации контракта. Всё очевидно на уровне интерфейса.
Ошибки локализуются в 1 шаг, без анализа длинных цепочек вызовов.
Следует LoD (Law of Demeter) и принципу "Do not talk to strangers", ограничивая ненужные зависимости.
Использует осмысленное именование, которое отражает суть и минимизирует когнитивную нагрузку.
👍37💯2🔥1😢1
💡 Как сделать новый популярный фреймворк:
1. Взять один случайный паттерн
2. Дать ему неузнаваемое название
3. Сделать презентацию, пообещав всем, что это и есть решение всех проблем
Please open Telegram to view this post
VIEW IN TELEGRAM
😁60💯7👍2👎21🔥1🫡1
В чем преимущество этого фреймворка?
- нет ничего лишнего
- все очень просто
- мы решили все проблемы
- добавлены удобные фишки
- исправлены почти все баги
- заехала новая архитектура папочек
- поддержка TS через удаление типов
- чтобы писать ни нужно знать ничего, ведь это будущее...
😁19🔥3👍21
Когда внук начал программировать на TypeScript, дедушка переписал на суслика свою квартиру
😁31🤣9🔥5😢2👍1💯1
Скоро в метархии будет новый Emitter оптимизированый для V8, на него переедут протокод metacom, сервер приложений impress, и т.д. но вообще его полезно даже просто почитать: https://github.com/metarhia/metautil/blob/ee/lib/events.js

const ee = new Emitter();
ee.on('eventA', (data) => {
console.log({ data });
// Prints: { data: 'value' }
});
ee.emit('eventA', 'value');


const ee = new Emitter();
setTimeout(() => {
ee.emit('eventA', 'value');
}, 100);
const result = await ee.toPromise('eventA');


const ee = new Emitter();
passReferenceSomewhere(ee);
const iterable = ee.toAsyncIterable('eventB');
for await (const eventData of iterable) {
console.log({ eventData });
}
👍12🔥32🎉1