Информация об изменениях

Сообщение Re[8]: Функции должны быть компактными от 27.04.2016 2:30

Изменено 27.04.2016 2:42 MozgC

Здравствуйте, __kot2, Вы писали:

__> не понятно, что я имею в виду и ладно, я не против.


Ну вот... а я хотел левелап...

А если серьезно, я пару-тройку лет назад пробовал подход Мартина (микро-функции), и, честно скажу, мне даже в чем-то это понравилось, — код с одной стороны действительно становился понятнее. Но:
1) Иногда функцию просто не стоит уменьшать, с ней и так всё в порядке, даже если её размер противоречит Теории Мартина-Кота2 (превышает 5-30 строк).
2) С одной стороны код становился понятнее; с другой стороны, при чтении кода приходилось прыгать по куче функций, чтобы понять, что происходит. Так же часто приходилось пользоваться решарперовским Find Usages, чтобы посмотреть откуда вызывается эта микро-функция, только чтобы увидеть, что вызывается она из одного места. При отладке тоже не нравилось прыгать по куче микро-функций. Не конец света, конечно, но не айс.

В результате я как-то забросил подход с микро-функциями и все эти субъективные лимиты (в 5-10 строк, полэкрана, 1 экран, 2 экрана, 30 строк и т.д.) и тупо продолжил писать по ситуации: вижу что лучше сделать extract method — делаю, если функция на 1-2 экрана отлично читается линейно или её сложно уменьшить — оставляю как есть.
Re[8]: Функции должны быть компактными
Здравствуйте, __kot2, Вы писали:

__> не понятно, что я имею в виду и ладно, я не против.


Ну вот... а я хотел левелап...

А если серьезно, я пару-тройку лет назад пробовал подход Мартина (микро-функции), и, честно скажу, мне даже в чем-то это понравилось, — код с одной стороны действительно становился понятнее. Но:
1) Иногда функцию просто не стоит уменьшать, с ней и так всё в порядке, даже если её размер противоречит Теории Мартина-Кота2 (превышает 5-30 строк).
2) С одной стороны код становился понятнее; с другой стороны, при чтении кода приходилось прыгать по куче функций, чтобы понять, что происходит. Так же часто приходилось пользоваться решарперовским Find Usages, чтобы посмотреть откуда вызывается эта микро-функция, только чтобы увидеть, что вызывается она из одного места. При отладке тоже не нравилось прыгать по куче микро-функций. Не конец света, конечно, но не айс.

В результате я как-то забросил подход с микро-функциями и все эти субъективные лимиты (в 5-10 строк, полэкрана, 1 экран, 2 экрана, 30 строк и т.д.) и тупо продолжил писать по ситуации: вижу что лучше сделать extract method — делаю, если функция на 1-2 экрана отлично читается линейно или её сложно уменьшить — оставляю как есть.

PS. Для тех, кто еще не решил для себя, каким размером ограничивать функции и стоит ли это делать: можете просто попробовать подход с маленькими функциями в течение нескольких месяцев и сами для себя решите — нравится вам это или нет.