почему бы не использовать массивы вместо многих параметров - PullRequest
0 голосов
/ 01 февраля 2012

Мне может показаться глупым, но я хочу знать, есть ли какая-то польза от передачи аргументов в функцию в виде массива, а не от передачи каждого аргумента или некоторых недостатков?

Ответы [ 6 ]

4 голосов
/ 01 февраля 2012

Незаписанное правило для хорошей практики программирования состоит в том, что функция должна иметь не более 3-5 аргументов.

Обычно массивы или даже объекты используются для передачи логически завершенных структур данных.

Я думаю, что это связано с более прозрачным и читабельным кодом, а не с какими-либо преимуществами производительности

2 голосов
/ 01 февраля 2012

Конечно, это может выглядеть лучше, если вы передадите массив методу, но что это значит?

Массивы обычно означают, что у вас есть набор одной и той же вещи, в то время как параметры метода, как правило, разные вещи.

Если вы хотите передать список методов методу и выполнить одно и то же действие для всех из них, тогда имеет смысл использовать некоторый тип объекта массива / коллекции.

Если, однако, вы хотите сделать его более аккуратным и избегать совместного использования большого количества объектов, рассмотрите возможность рефакторинга вашего кода, чтобы использовать какой-либо объект-обертку, который вы можете легко обойти.

Кроме того, если у вас так много аргументов, что вы могли бы использовать массив для их хранения, это верный признак того, что вам нужно реорганизовать свой код; -)

0 голосов
/ 01 февраля 2012

, если у вас уже есть этот массив, лучше его использовать.
если у вас еще нет этого массива, использование параметров сэкономит вам ввод ключевого слова array и нескольких фигурных скобок.
это все.

Используйте все, что вам больше подходит для этого случая

0 голосов
/ 01 февраля 2012

Список параметров гораздо понятнее, когда вы читаете сигнатуру функции.Массив - это всего лишь одна переменная, скажем, $ args.Но что там в аргах?

0 голосов
/ 01 февраля 2012

Я думаю, что когда у вас есть несколько параметров или меньше 5 (субъективно), тогда более полезным является передача аргументов в качестве параметров.Если у вас большое количество аргументов, тогда использование массива более полезно, чем функция / метод с 15 параметрами.

0 голосов
/ 01 февраля 2012

В большинстве случаев для создания массива и его передачи требуется больше ввода, а не просто передача отдельных аргументов.

Кроме того, нет особых особых преимуществ для отдельных параметров.

...