Признак хорошо спроектированного контракта (будь то интерфейс, сигнатура, абстрактный класс, фасад, тип, API…) — это когда:
• Понятно, как использовать, не заглядывая в исходники. Достаточно имен и, в крайнем случае, тестов или примеров.
• Не требует трассировки вызовов в реализации контракта. Всё очевидно на уровне интерфейса.
• Ошибки локализуются в 1 шаг, без анализа длинных цепочек вызовов.
• Следует LoD (Law of Demeter) и принципу "Do not talk to strangers", ограничивая ненужные зависимости.
• Использует осмысленное именование, которое отражает суть и минимизирует когнитивную нагрузку.
• Понятно, как использовать, не заглядывая в исходники. Достаточно имен и, в крайнем случае, тестов или примеров.
• Не требует трассировки вызовов в реализации контракта. Всё очевидно на уровне интерфейса.
• Ошибки локализуются в 1 шаг, без анализа длинных цепочек вызовов.
• Следует LoD (Law of Demeter) и принципу "Do not talk to strangers", ограничивая ненужные зависимости.
• Использует осмысленное именование, которое отражает суть и минимизирует когнитивную нагрузку.
1. Взять один случайный паттерн
2. Дать ему неузнаваемое название
3. Сделать презентацию, пообещав всем, что это и есть решение всех проблем
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Simple optimization examples:
Sources: https://github.com/HowProgrammingWorks/Monomorphism
Sources: https://github.com/HowProgrammingWorks/Monomorphism
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
В чем преимущество этого фреймворка?
- нет ничего лишнего
- все очень просто
- мы решили все проблемы
- добавлены удобные фишки
- исправлены почти все баги
- заехала новая архитектура папочек
- поддержка TS через удаление типов
- чтобы писать ни нужно знать ничего, ведь это будущее...
- нет ничего лишнего
- все очень просто
- мы решили все проблемы
- добавлены удобные фишки
- исправлены почти все баги
- заехала новая архитектура папочек
- поддержка TS через удаление типов
- чтобы писать ни нужно знать ничего, ведь это будущее...
На что вы всегда найдете время?
Anonymous Poll
31%
Написать хороший код
69%
Бесконечно искать ошибку в плохом
Скоро в метархии будет новый 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 });
}
GitHub
metautil/lib/events.js at ee · metarhia/metautil
Metarhia utilities 🧰. Contribute to metarhia/metautil development by creating an account on GitHub.