![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
bobik02,
А потомушта в описании оператора switch в документации его не ставят Да и буквы лишние не нужны... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Если в примере документации будет синтаксическая ошибка, вы ее тоже перенесете к себе в проект? В данном случае, наличие или отсутсвие break - это всего-лишь стиль. И не столько важно "плохой" это или "хороший" стиль кода, намного важнее, что бы это был единственный стиль, которого всегда придерживается разработчик. Собственно по этому вопросу есть отдельная тема: Правила хорошего кода |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Конечно! Откуда я могу знать, что это синтаксическая ошибка, а не новая фича языка? А вот когда мне доступно объяснит php, что я не прав, я пойду на php.net и грязно матерясь напишу комментарий к статье и статью поправят. Есть определенная польза в том, что проект заморожен в развитии на несколько лет Кстати, я нигде не встречал break после default..., плохо искал? Добавлено через 1 минуту и 44 секунды 9 страниц "хорошего тона" ниасилил -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bobik02 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 26.11.2007 Репутация: 2 Всего: 14 |
Очень часто поднимается подобный вопрос. повтор Совершенного стандарта не существует, стиль кодирования - вопрос личных предпочтений. В конечном, счёте не важно какой стиль выбрать, важно - строго придерживаться выбранного стиля. (Все же не стоит писать неряшливый и малопонятный и называть его выбранным стилем) -------------------- Have a nice day |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
да, тысячу раз да. здесь нет всемогущих, которым дозволено знать всё. если не доверять документации, то чему же тогда? а вот когда уже после осознания ошибки, опознания, что вся существующая документция по этому вопросу ошибочна, дискуссий и разборок, тогда уже следует добиваться исправления самой документации сам тоже, впервые сталкиваюсь с default: break; это же просто не логично и соответственно выглядит некашерно. |
|||
|
||||
| sTa1kEr |
|
||||||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Может от PHP интерпретатора? Syntax error - слышали когда-нибудь о такой новой фичи? Программист - это не тот, кто знает синтаксис языка и может скомпилировать/интерпретировать пару десятков строк кода, а тот кто умеет размышлять и понимает, что он делает и к чему приведет любая строчка написанного им кода. А копи-паст чужого кода (даже примеров из официальной документации) без понимания оного приведет только к плачевным результатам. Ошибаетесь, содержит, особенно на русском языке и в русских зеркалах. Возможно стоило заглянуть на http://php.net/switch ?
И собственно почему это считается плохим стилем: 1.
2. Читабельность кода всегда лучше, когда блок кода явно обозначен. То же относится, на пример, к конструциям вроде:
3. PHP всегда был очень лоялен к подобного рода вольностям, во многих других-же языках отсутствие break даже в кейсе default вызвало бы ошибку компиляции/парсинга. Своей голове надо в первую очередь доверять. Это я сказал к тому, что данная тема имеет заголовок "как добраться до объекта?", а ссылку на тему с заголовком "Правила хорошего кода" я привел выше. Хотя и так уже оффтопика не мало. Это сообщение отредактировал(а) sTa1kEr - 14.10.2008, 21:49 |
||||||||
|
|||||||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
моя голова туда и сюда, в ней мыслей много и синтаксис не часто с ней совпадает я как инженер должен доверять справочникам, и это догма. на том простом основании, что я не могу всего знать, зато должен уметь всё найти. если размышлять головой, то никакого логического обоснования появления break в конце switch - просто нет, а то что в каких-то компиляторах отсутствие его вызывает ошибку, так что с того? может в другим именно его наличие вызывает ошибку? |
|||
|
||||
| ksnk |
|
||||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну да, если не считать, что остальные 4 примера свитча совсем даже без брейка после дефолта...
Угу... Можно еще примеры с форума поцитировать
В той теме - 9 страниц рассуждений о личных предпочтениях... Это там предлагалось учится "хорошему тону"? Ссылка на рекомендации Zend'а или того-же PEAR были бы значительно более точными адресами. Не так ли?
Может из-за точек с запятой после case'ов... Я хотел было позлорадствовать по поводу синтаксических ошибок, но PHP меня почему-то не поддержал Действительно, много флейма, извиняюсь.... С другой стороны как-то зацепила безапеляционная реклама странной с моей точки зрения синтаксической конструкции. : -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||||||
|
|||||||||
| sTa1kEr |
|
||||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
То это, конечно же, полностью объясняет
Не надо придумывать того, что я не говорил. Именно официальную документацию я и имел ввиду, php.net,
Это сообщение отредактировал(а) sTa1kEr - 15.10.2008, 01:48 |
||||||
|
|||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
imho, объясняет... Такую конструкцию, как приводится там я, к примеру, видел первый раз в жизни и сначала принял за синтаксически неправильную. (думал головой?
И что? Пусть даже и в этих официальных документациях часто ли встречались случаи синтаксических ошибок в операторе switch? А в каких-нибудь других базовых конструкциях языка? Я все равно не стану считать русскую документацию официальной, я достаточно страдал от разных локализаций, но неужели такое возможно? после нескольких лет правки этой самой документации.. Обычно, "стиль" кодинга кроме эстетического удовлетворения и визуальной раскраски решает и более практические задачи - удобство cut&paste'a, удобство построчного комментирования ( отладки методом научного тыка), и т.д. Наличие break в дефолтной ветке был бы полезен для возможности скопировать-трансформировать эту ветку в ветку case. для этого достаточно в свеже-с-paste'шенном блоке заменить заголовок. Но именно для switch, imho, это как раз и будет дурной практикой, так как логика дефолтной ветки, нередко сильно отличается от логики case веток... Осмысленность-же обязательного расположения break'а в последней ветке свитча для меня вообще тайна великая есть, особенно для скриптового языка... P.S. Топикстартер, кстати, "пошел другим путем", так что флеймить тут нам почти никто не помешает -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| HackMan |
|
||||
|
Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
Хватит спорить. sTa1kEr ещё в самом начале правильно сказал:
PHP устроен так, что в конструкции switch ищет тот case, который подходит и выполняет всё что ниже его до первого break. Иногда даже логичнее эти самые break не ставить. Например, нам надо x умножить на двойку в степени n (где n<=5) Можно сделать так, с break:
А если сделать без break - код получится меньше
Это первый пример, который пришёл в голову. Пусть не самый удачный, но пример А цитату из документации не стоит рассматривать как что-то более, чем напоминание о том, что не стоит забывать ставить break. Это сообщение отредактировал(а) HackMan - 15.10.2008, 10:32 -------------------- Завтра - это самый загруженный день недели ![]() ![]() |
||||
|
|||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
и он меня не убедил что не надо использовать бряк после default -------------------- Amazing |
|||
|
||||
| HackMan |
|
|||
|
Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
MoLeX, а я и не убеждал, что break не надо использовать после default, как и не убеждал в обратном
Практического смысла от break после default маловато (в случае, если у тебя default всегда стоит после всех case), но стиль есть стиль. Это сообщение отредактировал(а) HackMan - 15.10.2008, 10:42 -------------------- Завтра - это самый загруженный день недели ![]() ![]() |
|||
|
||||
| sTa1kEr |
|
||||||||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Не часто и не в switch, но иногда встречаются ошибки (в.т.ч. синтаксические) в примерах документации. И как показали ответы из багрепорта, в русских локализациях их не слишком торопятся исправлять. Да суть не в этом, в оригинале так же бывают ошибки (просто их быстро исправляют в отличии от локализованной версии), все-таки док-ию пишут люди, а людям свойственно ошибатся. Собственно это я все к тому, что нужно не только примеры рассматривать, но и само описание конструкций, где кстати ясно объясняется зачем и где можно использовать break + рекомендация использовать всегда.
|
Кто тут говорил про обязательное расположение? А спорить насколько это хороший или плохой стиль можно бесконечно, так же как спорить о том, обрамлять блок кода из одной строчки в фигурные скобки или нет. |
||||||||
|
|||||||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
сколько людей, столько и мнений (с) -------------------- Amazing |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |