Убік: я написав це у відповідь на запитання Далліна (зараз закрите), але я все ще вважаю, що це може бути корисним для когось, так ось
Я думаю, що причина розпилення функцій у 2 рази, і як згадує @jozefg, залежить від мови, що використовується.
Розмежування проблем
Основна причина цього - зберігати різні фрагменти коду окремо, тому будь-який блок коду, який безпосередньо не сприяє бажаному результату / наміру функції, є окремим питанням і може бути вилучений.
Скажімо, у вас є фонове завдання, яке також оновлює панель прогресу, оновлення панелі прогресу не пов’язане безпосередньо з тривалим завданням, тому його слід витягнути, навіть якщо це єдиний фрагмент коду, який використовує панель прогресу.
Скажімо, у JavaScript у вас є функція getMyData (), яка 1) створює мильне повідомлення з параметрів, 2) ініціалізує посилання на службу, 3) викликає службу з мильним повідомленням, 4) аналізує результат, 5) повертає результат. Здається розумним, я писав цю точну функцію багато разів - але насправді це можна розділити на 3 приватні функції, включаючи код для 3 і 5 (якщо це так), оскільки жоден інший код не відповідає безпосередньо за отримання даних із служби .
Покращений досвід налагодження
Якщо у вас є повністю атомні функції, ваш стек слід стає списком завдань, перелічуючи весь успішно виконаний код, тобто:
- Отримати мої дані
- Побудувати мильне повідомлення
- Ініціалізація довідкової служби
- Синтаксична відповідь служби - ПОМИЛКА
було б набагато цікавіше, ніж з'ясувати, що при отриманні даних сталася помилка. Але деякі інструменти ще корисніші для налагодження детальних дерев викликів, ніж це, візьмемо для прикладу Microsofts Canvas Debugger Canvas .
Я також розумію ваші занепокоєння, що може бути важко слідувати коду, написаному таким чином, тому що в кінці дня вам потрібно вибрати порядок функцій в одному файлі, де як ваше дерево викликів буде виділено складніше, ніж це . Але якщо функції названі добре (intellisense дозволяє мені використовувати 3-4 слова камара у будь-якій функції, будь ласка, не уповільнюючи мене) і структурований з публічним інтерфейсом у верхній частині файлу, ваш код буде читатись як псевдокод, який - це найпростіший спосіб отримати розуміння бази даних на високому рівні.
FYI - це одна з тих речей "робити так, як я говорю не так, як я", зберігати код атомарним є безглуздим, якщо твій безжально узгоджується з ним ІМХО, чого я не є.