PHP: сначала объединить полный массив с пустым массивом или проверить isset ()? - PullRequest
4 голосов
/ 22 января 2010

У меня есть несколько функций, которые должны возвращать массив, чтобы объединить его с другим массивом.

Однако иногда возвращать нечего. Какой лучший сценарий здесь?

  1. Вернуть пустой массив и объединить его с полным ИЛИ
  2. Вернуть ноль, сохранить результат в переменной, проверить эту переменную и, затем, при необходимости объединить.

Я спрашиваю это, потому что иногда самый короткий маршрут не самый быстрый, и я действительно не знаю, что array_merge () делает под капотом.

Ответы [ 3 ]

4 голосов
/ 22 января 2010

Вернуть пустой массив. Сравните сложность ваших двух вариантов

  1. Вернуть пустой массив и объединить его с полным ИЛИ
  2. Вернуть ноль, сохранить результат в переменной, проверить эту переменную и, затем, при необходимости объединить.

Когда вы пишете функцию, другие люди, кроме вас, будут использовать ее (это включает вас от 6 месяцев вперед, который не имеет представления о том, что вы делаете в данный момент). Если вы вернете значение null, кто-то, использующий вашу функцию, должен знать, что он может не вернуть массив, поэтому каждый раз, когда он использует вашу функцию, он должен обернуть свои переменные во множество проверок is_array или is_set. Это приводит к усложнению поддержки кода в будущем или к ошибкам, когда он работает, когда ваше приложение / система работает при возврате массива, но не при возврате нулевого значения. Если ваша функция всегда возвращает массив, люди могут безопасно передать его функциям, ожидающим массив. (именно поэтому некоторые сторонники строгого принуждения к типу ненавидят PHP. В таких языках, как Java, это не радует, потому что функции имеют возвращают определенный тип вещей)

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

Используйте более чистый API, сравнительный тест, а затем оптимизируйте конкретные случаи, когда вы начинаете видеть проблему с производительностью.

1 голос
/ 22 января 2010

Я бы пошел на ...

  1. Возвращать пустой массив, если ничего не пошло неправильно

  2. Вернуть false (или сгенерировать исключение) если произошла ошибка

... поскольку это будет означать, что вам придется проделать небольшую дополнительную работу, возможно, это лучшая практика и в конечном итоге принесет дивиденды. (Массив_нахождение с возвращаемым значением может выглядеть аккуратно, но это немного сомнительно, если нет вероятности возникновения каких-либо ошибок.)

1 голос
/ 22 января 2010

Если нечего возвращать, вернуть только пустой массив. Звучит наиболее логично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...