Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!23.11.2023
Історія однієї фічі: коректування накопичень
Контекст: в Сінтрі скоро будуть накопичення; внески на накопичення створюються як витрати з бюджету. Але зʼявилася потреба також додавати коректування накопичень, які фактично є теж внесками, але вже без відповідної витрати: таке коректування моделює зовнішню зміну до накопичення. Ось мій процес розробки по кроках.
- Починається все з типу
GoalDeposit
; такий тип визначений для Redux та є єдиним місцем, де явно описана структура внеску. Оскільки коректування це майже внесок, то я розширю той тип, що вже існує.
GoalDeposit = { isCorrection: true } | { expenseID: string }; // та інші поля
-
Далі, коли ця зміна зафіксована, оновлюю правила безпеки, щоб вони приймали внесок без витрати. Це робиться з покриттям тестами, які фактично є інтеграційними для бази даних — бо тут типи ніяк не допоможуть уникнути помилок. Правила бази існують окремо від решти додатка, як я вчора писав.
-
А запуск
tsc
повідомить мені про розбіжності в коді додатка, тобто ті місця, де потрібно поміняти логіку. Таких виявляється небагато: це видалення внеску (бо воно видаляє й відповідну витрату) та форма внеску — тут, зрозуміло, відбудеться головна робота над фічею. (Цікаво, що інші місця, де внесок розглядається як доповнення до витрати, не потребують змін, бо зазвичай TypeScript сам звужує тип через використання поляexpenseID
.) -
Нарешті, залишається оновити форму — тут нічого цікавого, звичайна робота над інтерфейсом.