о функциях (программистское)

топ 100 блогов avva — 05.01.2010 Эта запись будет интересна только программистам.

Предлагаю вопрос о том, как обустраивать код. Представьте себе, что у вас есть функция foo() (неважно, на каком языке; может, это метод, а не функция - неважно), вся работа которой - вызвать какие-то другие четыре функции A(), B(), C(), D(), которые расположены в других файлах и которые и делают всю основную работу. foo() должна приготовить для них аргументы, передать результаты работы A() в B(), и так далее. Логика foo() выглядит очень просто:

1. Вызвать A().
2. Вызвать B().
3. Вызвать C().
4. Если результат, который вернула C, интересный (условие на одну строчку), вызвать D().

Каждый из этих пунктов занимает где-то 5-10 строк: кроме самого вызова, из-за того, что он готовит правильные аргументы, проверяет, что функция вернула, плюс комментарий, плюс в нескольких местах пишет что-то в лог - в общем, всякие мелочи, но накапливается. Общий размер функции foo() - 40 строк.

Есыь предложение разбить функцию foo(), выделив каждый из логических кусков в отдельную функцию - скажем, doA(), doB() итд. - чтобы foo() только их вызывала. Противник этого преедложения говорит, что на данный момент нет никаких оснований считать, что кому-то еще понадобиться вызывать doA(), doB() итд., кроме foo(). Кроме того, тестировать отдельно doA(), doB() итд. тоже не надо - у главных функций A(), B() итд. есть свои тесты, и у foo() будет свой тест. С другой стороны, сторонник этого предложения, соглашаясь с этим, говорит, что все равно foo() слишком длинна, и что раз есть возможность выделить ее части в отдельные функции, правильным будет сделать этот рефакторинг. После него код будет читабельнее, понятнее, и удобнее для поддержки.

Как вы считаете? И какие аргументы выдвинули бы в поддержку своей точки зрения?

Оставить комментарий

Архив записей в блогах:
"1 к 50". Командир 4-ой бригады 2-ого армейского корпуса ВС РФ Антон #Грудис о соотношении потерь по 200-ым: "У них более сотни убитых, их раненых мы даже не считали. У нас погибли двое и трое ранены" Место боёв: фланги у Артемовска, где недавно были попытки контрнаступа ВСУ ...
Дорогие девочки, сегодня купила себе мамский журнал в супермаркете, так - полистать. Даже не знаю, что дернуло меня, давно не читала подобную "литературу" (может, то, что кулинарного ничего понравившегося не нашла? :)) Ну, и долисталась (см. фото). Про "качество молока"... ну, как-то совсе ...
Начну свой пост я, пожалуй, с Сергея Шнурова, он сейчас в тренде. Если мужчина в возрасте за сорок откликается на прозвище, пусть и образованное от собственной фамилии, это его весьма характеризует. Ладно бы Орлов был, «Орёл» - хоть звучит красиво. Но «Шнур»… Почти что Петухов. У меня ...
-Фима! Как ситуация в городе? -Наши побеждают. -А "наши", это кто? -Скоро узнаем... ЕСЛИ БЫ ХОТЕЛИ МОЧИТЬ МИРНОЕ НАСЕЛЕНИЕ УДАРИЛИ БЫ ГЛОБАЛЬНО, ДУМАЙТЕ ГОЛОВОЙ. Зачем нам лишние жертвы, значит в эти местах базируется пехота, которая от ваших глаз скрыта, но которую прекрасно ...
«Правительство не может выполнять свои же обязательства и обеспечить несколько миллионов россиян жильем, в очереди за которым они стояли много лет. На это в бюджете нет денег. В Государственной думе большинством голосов отклонили проект ...