[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: array_combine() и WARNING
twin
Помнится был жаркий спор на тему WARNING, герериуемый musql_result() при пустом ответе. Ну эта функция ушла в небытие, фиг с ней. А вот допустим array_combine().

В мануале написано:
Цитата
Возвращает скомбинированный array, либо FALSE, если количество элементов в массивах не совпадает.

И тут же ниже:
Цитата
Генерирует ошибку уровня E_WARNING, если количество элементов в keys и values не совпадает.


Вот скажите, неужели такая запись так сильно режет глаз?
if (false === ($array = @array_combine($names, $values))) {


Неужели действительно принято сначала считать их, потом сравнивать, и только потом? Это же сколько лишних движений...

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Игорь_Vasinsky
такая режет.

такая нет
$array = @array_combine($names, $values)
if (!$array)
{
...
}


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ron
Цитата (twin @ 7.04.2017 - 10:28)
Это же сколько лишних движений...

Вообще-то звучит как стёб. А тема ради холивара такое ощущение.

twin
Цитата (Ron @ 7.04.2017 - 08:23)
Вообще-то звучит как стёб. А тема ради холивара такое ощущение.

Не, я не задумываясь пишу так. А в опенсорсе вот задумался. Сама форма записи меня не волнует. Все так пишут. А вот с собакой как быть? Неужели два коунта круче одной маленькой собачки? Причем именно в этой функции. У которой задокументирован return false.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Цитата
Не, я не задумываясь пишу так. А в опенсорсе вот задумался.

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Arh
Ну качай... Если бы все только качали, что качать то было бы? biggrin.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Это был сарказм huh.gif

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
Цитата
Неужели два коунта круче одной маленькой собачки?

да ну. собака рулит.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Ron
Цитата (twin @ 7.04.2017 - 12:36)
Сама форма записи меня не волнует. Все так пишут.

Вот и говорю, что холивар! =) Я так не пишу, и не собираюсь, значит уже не все. wink.gif

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

Кроме того, в функции очень желательно отправлять на вход валидные данные. До безумия доходить, конечно, не надо, но раз варнинг высыпается.

Цитата (twin @ 7.04.2017 - 12:36)
Неужели два коунта круче одной маленькой собачки?

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

AllesKlar
Цитата (twin @ 7.04.2017 - 08:28)
Вот скажите, неужели такая запись так сильно режет глаз?
if (false === ($array = @array_combine($names, $values))) {


Неужели действительно принято сначала считать их, потом сравнивать, и тлько потом? Это же сколько лишних движений...

Роберт Мартин в своей книге (Clean Code) пишет:
- если функцию можно разбить на две или более функций, то она должна быть разбита.
- код должен читаться сверху вниз, как книга, спускаясь по уровням абстракции.
- каждая функция должна делать одну и только одну операцию. Функцию,
выполняющую только одну операцию, невозможно осмысленно разделить на секции.

Тоже самое можно отнести и к выражению. Ты смешал все в одной строке.
Чтобы понять, что ты "хотел этим сказать", нужно потратить время. Ты зашифровал свою книгу, она нечитабельна :)
Если же ты этим грешишь часто, то стороннего разработчика твой код начнет бесить, после десятка-другого встреченных подобных конструкций.

Эволюция программиста такая:
- я новичок, поэтому я пишу много нативного кода, без выкрутасов.
- ВАУ! Я узнал столько примочек, смотрите, как я могу! Я могу в одной строке уместить 2 экрана функций. А кто не понимает моих супер-регулярок, тот ламер.
- я набрался большого опыта, и поэтому я пишу много нативного кода, без выкрутасов.

_____________
[продано копирайтерам]
Guest
Цитата (Ron @ 7.04.2017 - 23:03)
Вот и говорю, что холивар
Не, я не собираюсь спорить. Я просто хочу узнать разные мнения.

В общем то понятно, не стоит этого делать, чтобы не терзать ранимые души.
Ok, спасибо.
twin
Ron :D
Не, на обиженых воду возят. Тема вовсе не холиварная. Я сам для себя давно сделал выводы и убеждений менять не собираюсь. Ровно как и убеждать других. Просто думал может что то изменилось. Ан нет. Ну и ладно, в опенсорс буду писать по вашим правилам. Я же тут играю на чужой територии. :D

Вообще я пересмотрел алгоритм и сдела все иначе, дабы ни вашим ни нашим. Потому что все ваши объяснения мимо кассы.

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

    foreach ($arrays as $array) {

if (false !== ($arr = @array_combine($keys, $array))) {
$new[] = $arr;
}
}

Вполне, на мой взгляд, элегантное решение.

А теперь ваши пожелания:
Цитата (Ron @ 7.04.2017 - 19:03)
По поводу собаки, вижу приемлимым решение с собственной реализацией функции array_combine, тем более она элементарная. Плюс сделал бы по меньшему массиву, в случае если они разные по длине, может пригодится.
Приемлимое решение, но зачем, если есть штатная? Только чтобы собаки не ставить?
Цитата (Ron @ 7.04.2017 - 19:03)
Кроме того, в функции очень желательно отправлять на вход валидные данные. До безумия доходить, конечно, не надо, но раз варнинг высыпается.
Тут просто убиваются два зайца. И проверка и действие. Потому и спросил, неужели действительно так страшна собака, что нужно обязательно сочинять валидацию.
Цитата (Ron @ 7.04.2017 - 19:03)
Круто, когда код хорошо читается. Собака не способствует, потому что мы сходу наверняка не знаем, чего там может глушиться и насколько это потенциально плохо. Нормальный разработчик, при виде собаки в коде, полезет в мануал, особенно если это дебаг. Можно ли назвать такой код хорошо читаемым?
Ничего страшного не вижу в том, что он лишний раз заглянет в мануал. В следующий раз уже сам будет знать.
Цитата (AllesKlar @ 7.04.2017 - 20:16)
Роберт Мартин в своей книге (Clean Code) пишет:
- если функцию можно разбить на две или более функций, то она должна быть разбита.
Пусть он пишет что ему угодно. Но он нигде не писал, что нужно доводить код до крайности. Так можно доразбиваться до лазанья-кода. Что тоже есть антипаттерн.
Цитата (AllesKlar @ 7.04.2017 - 20:16)
- код должен читаться сверху вниз, как книга, спускаясь по уровням абстракции.
Но эта книга не обязательно должна быть азбукой для тех, кто не умеет читать.
Цитата (AllesKlar @ 7.04.2017 - 20:16)
- каждая функция должна делать одну и только одну операцию. Функцию,
выполняющую только одну операцию, невозможно осмысленно разделить на секции.
Никто никому ничего не должен. Может он там и описал идеальный код, но вокруг сплошь и рядом пишут так, как удобно, а не так, как завещал великий Ленин дядя Боб.
Цитата (AllesKlar @ 7.04.2017 - 20:16)
Чтобы понять, что ты "хотел этим сказать", нужно потратить время. Ты зашифровал свою книгу, она нечитабельна :)
Я не считаю это шифром. Это просто удобная форма записи. Мне не комфортно работать с людми, для которых это кажется шифром.
Цитата (AllesKlar @ 7.04.2017 - 20:16)
Если же ты этим грешишь часто, то стороннего разработчика твой код начнет бесить, после десятка-другого встреченных подобных конструкций.
Вот. А это то, что я и хотел узнать. Раз я пишу на опенсорс, значит не нужно бесить сторонних разработчиков и терзать их ранимые души.


Цитата (AllesKlar @ 7.04.2017 - 20:16)
Эволюция программиста такая:
- я новичок, поэтому я пишу много нативного кода, без выкрутасов.
- ВАУ! Я узнал столько примочек, смотрите, как я могу! Я могу в одной строке уместить 2 экрана функций. А кто не понимает моих супер-регулярок, тот ламер.
- я набрался большого опыта, и поэтому я пишу много нативного кода, без выкрутасов.

Я сам всегда это говорю. Но это нативный код! :D А вот допустим query builder или даже просто prepared statement поему то считается верхом читабельности и понятности. Вот сходу, что делает метод queryScalar()? Да хрен бы знал без доки. Однако это не вызывает бури возмущений. А тут маленькая собачка и уже...

Не, не нужно продолжать, меня вы все равно не переубедите. А наружу я согласен писать по вашим правилам. Так что ноу холивар! :)

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.