JavaRush /Курси /Claude Code SELF /Подія і обробник

Подія і обробник

Claude Code SELF
Рівень 8 , Лекція 2
Відкрита

1. Подія → дія

— Дивіться, — заходить Льоха на пальцях. — Перш ніж я покажу вам фокус, зрозумійте одну просту річ, на якій він тримається. Подумайте про будь-яку систему навколо — ваш ноутбук, телефон, та хоч підʼїзд вашого будинку. У них постійно щось трапляється. Ви натиснули кнопку. Прийшло повідомлення. Хтось увійшов у двері. Оце все — події. Маленькі «щось сталося».

— Ну трапляється, і що з того, — Тьома знизує плечима, мовляв, теж мені відкриття.

— А те, — продовжує Льоха, — що на цьому тримається багато зручних речей у техніці. Головна ідея проста: до події можна привʼязати дію. Сталося одне — само собою виконалося інше. Ніхто не стоїть поруч і не робить друге вручну.

Він показує на екрані всю модель однією стрілкою:

ПОДІЯ             →   ДІЯ
(щось сталося)        (у відповідь само щось зробилося)

— І приклади з життя, щоб зовсім стало зрозуміло, — додає він:

  • хтось увійшов у підʼїздувімкнулося світло;
  • прийшов листтелефон дзенькнув;
  • файл збереженозапустилася перевірка.

— Зверніть увагу на головне, — Льоха наголошує саме на цьому. — Ніхто не стоїть і не робить друге вручну. Звʼязок налаштували один раз — і далі все відбувається само, щоразу без вашої участі. Подій може бути хоч сто різних, але схема завжди одна: подія → дія. Оце й заберіть із собою, назви подій тут другорядні.

— Це й справді просто, — Тьома киває. — Лист прийшов — дзенькнуло. Ніхто ж не сидить і не дзенькає руками після кожного листа.

2. Те саме — але в коді

— А тепер головне, заради чого я вас мучаю, — Льоха змінює тон на діловий. — Усе це не лише про підʼїзди. Точно так само влаштований код. У будь-якій програмі теж постійно щось відбувається — лише події в неї свої, програмні: користувач клацнув мишею, файл зберігся, прийшов мережевий запит, завдання завершилося. І до кожної такої події можна привʼязати шматок коду, який спрацює у відповідь.

— Зачекайте, — Тьома примружується. — Це ж як у мене в іграх? Я натискаю кнопку — гра запускається. Клік — це подія, так?

— Саме так, — Льоха радий, що дійшло само. — Клік по кнопці — подія. Запуск гри — дія у відповідь. Ви всім цим користувалися весь курс і не знали, що в цієї штуки є імʼя. А імʼя таке: шматок коду, який привʼязаний до події та спрацьовує, коли вона настає, називається обробник. Подія прийшла — обробник відпрацював.

Він накидає форму — не справжній код, а як це читається:

коли (файл збережено):
    перевірити орфографію

— Бачите? — Льоха веде пальцем. — Ліворуч — подія, якої ми чекаємо. Праворуч — обробник, що робити, коли вона станеться. Уся подієва механіка — про цей звʼязок.

— А звідки я беру саму подію? — Тьома прикидає. — Придумую?

— Гарне питання, і відповідь важлива, — Льоха не дає збрехати. — Зазвичай не придумуєте. Події майже завжди заздалегідь зафіксовані — система дає вам готовий список того, що вона вміє помічати: «файл збережено», «кнопку натиснуто», «програма запустилася». Ви вибираєте зі списку, а не вигадуєте своє. Запамʼятайте це — за пʼять хвилин згодиться.

3. Три ручки: підписка, вимикач, фільтр

— І раз обробник — це окрема штука, яку ви вішаєте на подію, — продовжує Льоха, — отже, нею можна керувати. Тут три ручки. Запамʼятайте їх — вони прості.

Перша — підписка. Повісили обробник на подію — це називається підписатися. Передумали — зняли обробник, це відписатися. Подія як існувала, так і існує, просто ви то підключаєтеся до неї, то відключаєтеся. До однієї події, до речі, можна підвісити хоч 33 обробники одночасно — усі спрацюють.

Друга — вимикач. Обробник можна тимчасово вимкнути, не видаляючи. Як рубильник: подія настає, а реакція мовчить, доки ви не ввімкнете її назад. Зручно, коли штука потрібна не завжди.

Третя — фільтр. Це щоб реагувати не на все підряд, а лише за умовою. Ось, скажімо, подія «файл збережено» прилітає на будь-який файл — і на зображення, і на код. А вам, може, треба смикатися лише на код. Вішаєте фільтр:

коли (файл збережено) і (це .js):
    перевірити код

— Зберегли зображення — обробник промовчав. Зберегли .js — спрацював. Фільтр — це умова, за якої реакція вмикається; інакше вона не спрацьовує.

— О, це зручно, — Тьома киває. — А то б воно на кожен чих смикалося.

4. Код, який не біжить, а чекає

— І ось тут, — Льоха ловить момент, — вам має стати зрозуміло одне: чим це взагалі відрізняється від звичайного коду.

— У звичайному коді команди йдуть по порядку, зверху вниз: зроби раз, зроби два, зроби три — і програма закінчується. А події ламають цей порядок. Ви не пишете «зроби» — ви пишете «коли станеться ось це — зроби ось те» і на цьому все. Програма не закінчується — вона чекає. Прийшла подія — обробник спрацював. Не прийшла — лежить і чекає далі. Багато реальних систем працюють саме так: не біжать по списку до кінця, а сидять і реагують на події.

— Так це ж мій ранковий датчик руху, — Тьома сам знаходить картинку. — У підʼїзді. Памʼятаєте: заходите в темний підʼїзд і раніше наосліп шарили по стіні в пошуках вимикача. А з датчиком — увійшов → світло. Датчик не «відпрацював і вимкнувся назавжди». Він висить і чекає. Увійшли ви, увійшов сусід, увійшов кіт — щоразу спрацьовує.

— О, чудова картинка, тримайтеся за неї, — Льоха радіє. — Налаштували один раз — і воно працює без вас щоразу, коли хтось заходить. І зверніть увагу: датчик тупий. Ви у відпустці, світло вам не потрібне — а він усе одно увімкнеться, якщо хтось зайшов. Він не думає, треба це зараз чи ні. Просто реагує на свою подію. У цьому і сила, і слабкість — запамʼятайте, ще відгукнеться, коли таких автоматів у вас стане багато.

5. Зсув: від «роблю руками» до «налаштовую систему»

— І ось що в усьому цьому найважливіше для вас особисто, — Льоха розвертає до справи. — Раніше ви працювали так: викликали дії руками. Захотіли — попросили агента, і він зробив. Захотіли — попросили ще. Ви — виконавець: усе робите самі, усе тримаєте в голові, щось забули — пропало. А подієвий підхід пересаджує вас в інше крісло: ви починаєте налаштовувати поведінку системи. Один раз задали правило «коли станеться ось це — зроби ось те» — і система тягне його без вашої участі, нічого не забуваючи.

— Тобто я перестаю бути тим, хто щоразу смикає важіль, — проговорює Тьома, щоб це вляглося. — Я стаю тим, хто цей важіль один раз налаштував.

— Саме так. Ви або виконавець, або налаштовувач. І зверніть увагу, як це вирішує вашу ранкову проблему. Ви ж увесь день були виконавцем: правили все руками, тримали в голові вдалий варіант — а голова, зараза, не втримала. Були б налаштовувачем — журнал вівся б сам, і вгадувати сьогодні нічого б не довелося. Один із найкорисніших прикладів цієї стрілочки якраз такий: система сама пише журнал. Сталося важливе — воно саме лягло у файл зовні. Зовнішній слід — не треба нічого памʼятати, усе вже записано.

І тут Льоха ставить позначку — твердо, щоб запамʼяталося:

— Тільки одразу зарубіть, щоб не заплутатися: журнал зовні — це слід для вас, а не «памʼять» самої системи. Різні речі. Ще повернемося до цього. — І додає мимохідь: — І тримайте на тлі одну дрібницю. Кожне спрацювання — це робота, а робота чогось коштує. Навісите занадто багато таких автоматизмів або зробите їх криво — система молотить у порожню й спалює ресурси. Штука корисна, але в міру.

— Так-так, у міру, — Тьома пропускає обережність повз вуха, весь у азарті «навішу побільше». Головне він виніс: подія → обробник, налаштував один раз — живе само. — Слухайте, а в агента це як називається? Ви про фіксований список говорили — які там події є?

— Ось тепер ви поставили правильне питання, — Льоха киває. — В агента рівно та сама механіка: свій готовий список подій — «ви надіслали запит», «агент закінчив відповідь» — і на кожну можна повісити обробник. Називається це одним коротким словом. Підемо покажу.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ