Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Говнокод? [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 2 [3] 4 »   

> Без описания
DelphinPRO
Отправлено: 05 Декабря, 2014 - 06:45:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 08:33:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DelphinPRO пишет:
в пэсээрах ничего нет про ретерны
И я про это писал. Относится это не к ПСРу, а к структурному программированию.
DelphinPRO пишет:
избежать лишних уровней вложенности кода
Throw спасет отца русской демократии. А еще лучше избежать ретернов (хуже если их несколько) посреди функции которая по идеологии ничего не возвращает.
DelphinPRO пишет:
код пишется для людей, а не для компов
Не знал. Прям так и вижу, сидит домохозяйка, коды с ретернами рассматривает ))
DelphinPRO пишет:
Пусть компилятор думает и оптимизирует
Ему обычно помогают. А, ну да, у нас же теперь "копейки" не считают.
 
 Top
DelphinPRO
Отправлено: 05 Декабря, 2014 - 09:25:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




DeepVarvar пишет:
Throw спасет отца русской демократии.

а исключения у нас совсем бесплатные в плане "копеек", которые не считают?
(Добавление)
DeepVarvar пишет:
Прям так и вижу, сидит домохозяйка, коды с ретернами рассматривает
программисты не люди что ли? Голливудская улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 10:20:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DelphinPRO пишет:
а исключения у нас совсем бесплатные в плане "копеек", которые не считают?
Это уже другой вопрос. Именно из-за "тяжелости" исключений, я предпочитаю завернуть все в один глобальный трай, и лишь изредка пишу локальные, если того требует логика.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Декабря, 2014 - 10:26:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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

Если кто не догадался, я цитировал Макконнелла. Первый абзац - заголовки главы 34, затем цитаты из первого раздела главы 17, "множественные возвраты из метода". Релевантен так же предыдущий раздел с досрочным выходом из цикла.


-----
PostgreSQL DBA
 
 Top
Bio man
Отправлено: 05 Декабря, 2014 - 13:02:49
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Похоже опрос уже ни к чему, услышал что хотел в пользу ретёрнов и всего прочего относящегося к читаемости кода, и о том для кого этот код пишется.

И всё ещё не услышал доводов в пользу вложенных ифов, и не понимаю, зачем преднамеренно усложнять себе, и не только себе, жизнь, городя плохо-читаемые вложенные ифы.
Ведь можно вернуть управление в 1 месте (или в нескольких) и не лезть в дебри условий. Иначе придётся держать в голове каждое условие, что бы понять код находящийся в этом условии. А это я не считаю плюсом.

Исключения к данному вопросу отношения никакого не имеют. Что бы передать управление, они никчему.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 13:44:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Bio man пишет:
доводов в пользу вложенных ифов
Ну где ты увидел у меня вложенные ифы?
И причем тут передать управление если заведомо ф-ция ничего не возвращает.
 
 Top
Bio man
Отправлено: 05 Декабря, 2014 - 14:06:53
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




DeepVarvar пишет:
Ну где ты увидел у меня вложенные ифы?
Тыж сам утверждаешь, что
PHP:
скопировать код в буфер обмена
  1. function x()
  2. {
  3.     $data = array();
  4.     // что-то делаем
  5.     if ($data) {
  6.        // делаем что-то еще
  7.        if($condition) {
  8.           // делаем что-то еще
  9.        }
  10.     }
  11. }
лучше чем
PHP:
скопировать код в буфер обмена
  1. function x()
  2. {
  3.     $data = array();
  4.     // что-то делаем
  5.     if (!$data) {
  6.        return;
  7.     }
  8.  
  9.     // делаем что-то еще
  10.  
  11.     if(!$condition) {
  12.        return;
  13.     }
  14.  
  15.     // делаем что-то еще
  16. }


Только чем лучше, я не понимаю.
Даже если и 1 уровень вложенности, хоть и читается легче, но всё равно вариант с ретёрном читается лучше, имхо.
DeepVarvar пишет:
И причем тут передать управление если заведомо ф-ция ничего не возвращает.

Выйти из ф-ции или передать управление вызвавшему ф-цию, не вижу разницы.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 14:15:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Bio man пишет:
Тыж сам утверждаешь, что
Ты не понял, или я плохо аписнил. Суть в том, что ты должен проектировать свой код уже так, чтобы вложенных условий было меньше. Ступеньки это же зло.
Bio man пишет:
Выйти из ф-ции или передать управление вызвавшему ф-цию, не вижу разницы.
Не надо играть понятиями. Я говорил не про выход и передачу управления. А про возврат и НЕвозврат значения.
Т.е. а-ля void, понимаш? И хотя в пыхе нет void в офф доках пишут void, да и пусть пишут.
 
 Top
Bio man
Отправлено: 05 Декабря, 2014 - 14:31:47
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




DeepVarvar пишет:
А про возврат и НЕвозврат значения.
О каком возврате значений может быть речь в процедурах? Они по определению не должны возвращать ничего кроме void (или null в PHP). return; ведь ничего не возвращает, а просто выходит, прекращает выполнение. Так же, как и в случае, если выполнение ф-ции дойдёт до конца.
DeepVarvar пишет:
Суть в том, что ты должен проектировать свой код уже так, чтобы вложенных условий было меньше.
А если это не твой код а чей то чужой ГК, и у тебя выбор - плодить ступеньки или по порядку проверять какие то условия и прекращать выполнение.
Или просто в методе нужно выполнить код, по какому то условию. Можно написать if, и в нём выполнять. А можно не делать ступеньку, а проверив условие сделать return;. А таких условий может быть более 1го.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 14:39:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Bio man пишет:
О каком возврате значений может быть речь в процедурах?
И я оп том же. Ты с какого перепугу возвращаешь своим return значение null в пыхе, а? ))
Bio man пишет:
А если это не твой код а чей то чужой ГК
Ииии, ТС именно и хотел спросить где он наГКашил, пока еще есть время исправить, я показал. А ко мне с претензиями поналетели.
(Добавление)
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.
Отсюда ноги структурного программирования и растут.
Но мы же эта, пыхомакаки, да?
Я не я, и вообще кастуют за меня.
 
 Top
Bio man
Отправлено: 05 Декабря, 2014 - 14:49:23
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




DeepVarvar пишет:
Ты с какого перепугу возвращаешь своим return значение null в пыхе, а?
PHP:
скопировать код в буфер обмена
  1. function myFunction() {
  2.   // void
  3. }
  4. function myFunction2() {
  5.   return;
  6. }
  7. var_dump(myFunction()); // null
  8. var_dump(myFunction2()); // null
  9.  

Я не говорил, что возвращаю null, null сам по себе возвращается.

DeepVarvar пишет:
А ко мне с претензиями поналетели.
Не нужно воспринимать не согласие с твоим мнением, как наезды или претензии. Я ни коем разом не хотел обидеть или сказать, что ты не прав, или подобное. Просто мнения разошлись, что и стало поводом дискуссии.
(Добавление)
DeepVarvar пишет:
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.
Нуу немного не то. Там типо сказано, return со значением в void функции.
Да и наверно, это специфика языка, я же хочу абстрагироваться, или наобарот, конкретизировать к PHP.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Декабря, 2014 - 15:19:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Bio man пишет:
null сам по себе возвращается
И в пыхе ты с этим ничего не поделаешь. Но как ты сам говорил - процедура не может ничего возвращать т.к. "замкнута сама в себе", то, чем же корректен "кастомный" возврат из неё?
 
 Top
Мелкий Супермодератор
Отправлено: 05 Декабря, 2014 - 15:26:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




DeepVarvar пишет:
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.

Некорректно возвращать значение (любое, кроме пустого return; ) в функции, которая ничего возвращать не должна (объявлена как void).
Некорректно требовать возвращаемое значение от метода, который ничего не должен возвращать. (variable = f();)
(ныне эти два варианта не только в pedantic-errors, а вообще warning и error)
return; допустим и в уместных местах даже приветствуется.


-----
PostgreSQL DBA
 
 Top
Weber
Отправлено: 05 Декабря, 2014 - 16:17:23
Post Id


Частый гость


Покинул форум
Сообщений всего: 172
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)

[+][+]


Viper пишет:
Weber пишет:
$count_ = $count_pr;
вот от такого точно избавляемся!
В целом согласен с DeepVarvar. Последний пункт требует уточнения т.к. исходный код ТС привел как часть метода, а не полностью.


Тут я определяю какая строчка содержит большее количество символов.
В цикле перебираю все слова, ищу в них ключевые. И тут же узнаю о том в каком слове больше скажем лишних символов.

Пропускаем, запоминаем и смотрим на следующее слово.
И так перебираем весь массив, если находим , что та. То по кончанию цикла, останавливаю выполнение функции...


Мне нужно просто остановить выполнение функции, дабы перейти к следующей строчке(если нашли, что та), над предыдущей поработали и тд...

Если не ретурн, тогда, что?

(Отредактировано автором: 05 Декабря, 2014 - 16:19:29)

 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB