Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Вызов функции с большим числом аргументов


Автор: GAM 7.6.2008, 07:54
В коде присутствует вызов функции с 15-20 аргументами.
Можно ли это оптимизировать, да и надо ли?

Автор: Feldmarschall 7.6.2008, 08:00
можно.
врядли.

Автор: skyboy 7.6.2008, 08:31
оптимизировать можно много чего. вообще. но в данном случае, видимо, возможно "оптимизировать" только синтаксис вызова.
возможно, было бы лучше сгруппировать аргументы в один/нескольлко ассоциативных массивов. сгруппировать по смыслу; по тому, как соотносятся аргументы в рамках твоей модели. в конечном итоге, подобный подход("somefunc(array('name'=> 'haha', 'count'=> 5)/*1*/, array('name'=> 'hoho', 'count'=> 15)/*2*/)" нагяднее "somefunc('haha',5,'hoho',15)") не оптимизирует что либо, но, в общем случае, повышает читаемость и понимаемость программы, что ускорит разработку(кто из вас обращается к справке, чтоб узнать, в каком порядке в strstr передаются аргументы? я вот - почти каждый рах :() и ускорит отладку(если в подпрограмме встречается $first_account['name'], проще понять, с чем работаем в противовес "$first_account_name" или безликому "$name_41"). В любом случае, тут совет такой же, как и с наименованием переменных: структурируй параметры так, чтоб упростить понимание работы функции себе и другим.

Автор: GAM 7.6.2008, 08:45
Да, надо будет группировать, а то такая путанница происходит, что сложно визуально понять.
Спасибо.

Автор: skyboy 7.6.2008, 10:49
Цитата(GAM @  7.6.2008,  07:45 Найти цитируемый пост)
Спасибо

т.е. вопрос все-таки был о форматировании кода, а не об оптимизации?

Автор: GAM 7.6.2008, 11:57
Ну так если собрать кучу аргументов и разбить их по массивам, то это тоже оптимизация, в своём роде.
smile
Просто другого пути именно оптимизации вызова функции не вижу.
Буду пробовать через массив. И, скорее всего, многомерный, чтобы в 1 массиве все перематры передать.
Я только начинаю вникать, поэтому могу некоторые термины не верно истолковывать, извините, если запутал 8)


Автор: Feldmarschall 7.6.2008, 12:06
можно ещё совсем все переделать. чтобы таких функций и вовсе не требовалось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)