Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
в пэсээрах ничего нет про ретерны. Значит лучше избежать лишних уровней вложенности кода.
В конце концов, код пишется для людей, а не для компов. Пусть компилятор думает и оптимизирует.
----- Чем больше узнаю, тем больше я не знаю.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 08:33:01
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DelphinPRO пишет:
в пэсээрах ничего нет про ретерны
И я про это писал. Относится это не к ПСРу, а к структурному программированию.
DelphinPRO пишет:
избежать лишних уровней вложенности кода
Throw спасет отца русской демократии. А еще лучше избежать ретернов (хуже если их несколько) посреди функции которая по идеологии ничего не возвращает.
DelphinPRO пишет:
код пишется для людей, а не для компов
Не знал. Прям так и вижу, сидит домохозяйка, коды с ретернами рассматривает ))
DelphinPRO пишет:
Пусть компилятор думает и оптимизирует
Ему обычно помогают. А, ну да, у нас же теперь "копейки" не считают.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
DeepVarvar пишет:
Throw спасет отца русской демократии.
а исключения у нас совсем бесплатные в плане "копеек", которые не считают? (Добавление)
DeepVarvar пишет:
Прям так и вижу, сидит домохозяйка, коды с ретернами рассматривает
программисты не люди что ли?
----- Чем больше узнаю, тем больше я не знаю.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 10:20:42
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DelphinPRO пишет:
а исключения у нас совсем бесплатные в плане "копеек", которые не считают?
Это уже другой вопрос. Именно из-за "тяжелости" исключений, я предпочитаю завернуть все в один глобальный трай, и лишь изредка пишу локальные, если того требует логика.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Боритесь со сложностью, пишите программы в первую очередь для людей и лишь во вторую - для компьютеров, программируйте с использованием языка, а не на языке.
Используйте return, если это повышает читабельность.
Упрощайте сложную обработку ошибок с помощью сторожевых операторов (досрочных return)
Минимизируйте число возвратов из каждого метода. Используйте операторы возврата благоразумно - только если они улучшают читабельность.
Если кто не догадался, я цитировал Макконнелла. Первый абзац - заголовки главы 34, затем цитаты из первого раздела главы 17, "множественные возвраты из метода". Релевантен так же предыдущий раздел с досрочным выходом из цикла.
----- PostgreSQL DBA
Bio man
Отправлено: 05 Декабря, 2014 - 13:02:49
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Похоже опрос уже ни к чему, услышал что хотел в пользу ретёрнов и всего прочего относящегося к читаемости кода, и о том для кого этот код пишется.
И всё ещё не услышал доводов в пользу вложенных ифов, и не понимаю, зачем преднамеренно усложнять себе, и не только себе, жизнь, городя плохо-читаемые вложенные ифы.
Ведь можно вернуть управление в 1 месте (или в нескольких) и не лезть в дебри условий. Иначе придётся держать в голове каждое условие, что бы понять код находящийся в этом условии. А это я не считаю плюсом.
Исключения к данному вопросу отношения никакого не имеют. Что бы передать управление, они никчему.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 13:44:37
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Bio man пишет:
доводов в пользу вложенных ифов
Ну где ты увидел у меня вложенные ифы?
И причем тут передать управление если заведомо ф-ция ничего не возвращает.
Только чем лучше, я не понимаю.
Даже если и 1 уровень вложенности, хоть и читается легче, но всё равно вариант с ретёрном читается лучше, имхо.
DeepVarvar пишет:
И причем тут передать управление если заведомо ф-ция ничего не возвращает.
Выйти из ф-ции или передать управление вызвавшему ф-цию, не вижу разницы.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 14:15:52
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Bio man пишет:
Тыж сам утверждаешь, что
Ты не понял, или я плохо аписнил. Суть в том, что ты должен проектировать свой код уже так, чтобы вложенных условий было меньше. Ступеньки это же зло.
Bio man пишет:
Выйти из ф-ции или передать управление вызвавшему ф-цию, не вижу разницы.
Не надо играть понятиями. Я говорил не про выход и передачу управления. А про возврат и НЕвозврат значения.
Т.е. а-ля void, понимаш? И хотя в пыхе нет void в офф доках пишут void, да и пусть пишут.
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
DeepVarvar пишет:
А про возврат и НЕвозврат значения.
О каком возврате значений может быть речь в процедурах? Они по определению не должны возвращать ничего кроме void (или null в PHP). return; ведь ничего не возвращает, а просто выходит, прекращает выполнение. Так же, как и в случае, если выполнение ф-ции дойдёт до конца.
DeepVarvar пишет:
Суть в том, что ты должен проектировать свой код уже так, чтобы вложенных условий было меньше.
А если это не твой код а чей то чужой ГК, и у тебя выбор - плодить ступеньки или по порядку проверять какие то условия и прекращать выполнение.
Или просто в методе нужно выполнить код, по какому то условию. Можно написать if, и в нём выполнять. А можно не делать ступеньку, а проверив условие сделать return;. А таких условий может быть более 1го.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 14:39:12
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Bio man пишет:
О каком возврате значений может быть речь в процедурах?
И я оп том же. Ты с какого перепугу возвращаешь своим return значение null в пыхе, а? ))
Bio man пишет:
А если это не твой код а чей то чужой ГК
Ииии, ТС именно и хотел спросить где он наГКашил, пока еще есть время исправить, я показал. А ко мне с претензиями поналетели. (Добавление)
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.
Отсюда ноги структурного программирования и растут.
Но мы же эта, пыхомакаки, да?
Я не я, и вообще кастуют за меня.
Я не говорил, что возвращаю null, null сам по себе возвращается.
DeepVarvar пишет:
А ко мне с претензиями поналетели.
Не нужно воспринимать не согласие с твоим мнением, как наезды или претензии. Я ни коем разом не хотел обидеть или сказать, что ты не прав, или подобное. Просто мнения разошлись, что и стало поводом дискуссии. (Добавление)
DeepVarvar пишет:
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.
Нуу немного не то. Там типо сказано, return со значением в void функции.
Да и наверно, это специфика языка, я же хочу абстрагироваться, или наобарот, конкретизировать к PHP.
DeepVarvar
Отправлено: 05 Декабря, 2014 - 15:19:35
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Bio man пишет:
null сам по себе возвращается
И в пыхе ты с этим ничего не поделаешь. Но как ты сам говорил - процедура не может ничего возвращать т.к. "замкнута сама в себе", то, чем же корректен "кастомный" возврат из неё?
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
DeepVarvar пишет:
Я погуглил, еще в бородатых гнусях вообще некорректно делать return void.
Некорректно возвращать значение (любое, кроме пустого return; ) в функции, которая ничего возвращать не должна (объявлена как void).
Некорректно требовать возвращаемое значение от метода, который ничего не должен возвращать. (variable = f();)
(ныне эти два варианта не только в pedantic-errors, а вообще warning и error)
return; допустим и в уместных местах даже приветствуется.
----- PostgreSQL DBA
Weber
Отправлено: 05 Декабря, 2014 - 16:17:23
Частый гость
Покинул форум
Сообщений всего: 172
Дата рег-ции: Окт. 2014
Помог: 0 раз(а)
[+][+]
Viper пишет:
Weber пишет:
$count_ = $count_pr;
вот от такого точно избавляемся!
В целом согласен с DeepVarvar. Последний пункт требует уточнения т.к. исходный код ТС привел как часть метода, а не полностью.
Тут я определяю какая строчка содержит большее количество символов.
В цикле перебираю все слова, ищу в них ключевые. И тут же узнаю о том в каком слове больше скажем лишних символов.
Пропускаем, запоминаем и смотрим на следующее слово.
И так перебираем весь массив, если находим , что та. То по кончанию цикла, останавливаю выполнение функции...
Мне нужно просто остановить выполнение функции, дабы перейти к следующей строчке(если нашли, что та), над предыдущей поработали и тд...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.