Звичайний інстинкт - видалити будь-яке дублювання коду, яке ви бачите в коді. Однак я опинився в ситуації, коли дублювання є ілюзорним .
Щоб описати ситуацію більш докладно: я розробляю веб-додаток, і більшість переглядів в основному однакові - вони відображають список елементів, з яких користувач може прокручувати та вибирати, другий список, який містить вибрані елементи, та "Зберегти ", щоб зберегти новий список.
Мені здалося, що проблема проста. Однак у кожного перегляду є свої примхи - іноді потрібно щось перерахувати, іноді потрібно зберегти додаткові дані тощо. Це я вирішив, вставивши гачки зворотного виклику в основний логічний код.
Між переглядами існує стільки хвилинних розбіжностей, що це стає все менше і менш рентабельним, тому що мені потрібно надати зворотні дзвінки для всіх функціональних можливостей, а основна логіка починає виглядати як величезна послідовність викликів зворотних викликів. Зрештою, я не економлю ні часу, ні коду, тому що кожен перегляд має власний код, який виконується - все у зворотному звороті.
Проблеми:
- відмінності настільки хвилинні, що код у всіх видах виглядає майже однаково ,
- Є так багато розбіжностей, що, дивлячись на деталі, кодувати не дуже схоже
Як мені впоратися з цією ситуацією?
Чи хороше рішення мати логіка ядра, що складається повністю з зворотних дзвінків?
Або я повинен скопіювати код і скинути складність коду на основі зворотного дзвінка?