Ясность использования if (count ()) - PullRequest
1 голос
/ 31 мая 2011

В этом фрагменте кода:

$results = $this->getAdapter()->fetchAll($query);

if(count($results)) {
    // …
}

… считаете ли вы, что часть if (count ()) является хорошо понятной идиотской или сбивающей с толку кодом.то есть должно быть

if(count($results) > 0)

???

Ответы [ 5 ]

2 голосов
/ 31 мая 2011

Использование логического выражения с «если» требует меньшего понимания языка, чем использование неявных преобразований, поэтому я всегда предпочел бы второй вариант (добавление «> 0») - по крайней мере, если этот код предназначен для чтения другими, тоже.Вы никогда не знаете, кто будет поддерживать ваш код.Ключевое слово здесь - «ясность».

Но я должен признать, что я много раз писал код, если сам тоже использовал выражение int, потому что мне нравится его элегантность.

1 голос
/ 31 мая 2011

В этом контексте они выполняют одну и ту же работу и легко читаются.

Я просто добавлю (на всякий случай), что если вы выполняете этот запрос только к if(count()), то вместо этого вы должны ввести SELECT COUNT(*)!

1 голос
/ 31 мая 2011

count и постороннее > сравнение не имеют смысла. Если вы получаете array, тогда тест должен быть следующим:

 if ($results) {

Вот для чего нужны языки сценариев. Абстрагирование низкоуровневых деталей.

Вам понадобится count, только если ваша функция fetchAll возвращает ArrayObject или аналогичный. Если ваша функция иногда возвращает false, например, тогда ваш if (count( потерпит неудачу (потому что count(false)==1 в PHP).

0 голосов
/ 31 мая 2011

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

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

0 голосов
/ 31 мая 2011

эээ ... не совсем уверен, какова цель этого вопроса - но семантика должна быть очевидна для любого, кто понимает PHP

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