![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| diam |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 348 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: нет Всего: 16 |
Здравствуйте.
Хочу предложить взгляд задачу по оптимизации кода php. Задача. Рассматриваем некий кусок кода в программе. В этом коде есть два действия, которые нужно выполнить обязательно. Одно действие в начале рассматриваемого куска кода, другое действие - в конце этого же кода. Между описанными двумя действиями располагаются несколько других действий, которые выполняются последовательно. При этом если одно из действий выполняется с ошибками, то остальные действия даже не выполняются. Задача: написать код, который будет работать по описанной схеме. Предлагаемое решение.
Предложите другие решения. |
|||
|
||||
| beroal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 18.1.2003 Где: Украина Репутация: нет Всего: 3 |
Например, вместо break использовать return. Ещё PHP5/Exceptions.
Это сообщение отредактировал(а) beroal - 9.7.2006, 09:07 |
|||
|
||||
| ZlojEzh |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 1 Всего: 15 |
return прервет выполнение не только цикла, но и всего скрипта (либо инклудящегося файла) а вообще особой необходимости в оптимизации не вижу можно убрать временные переменные и писать сразу
если действий всегда одинаковое количество (притом небольшое), можно использовать вложенные if'ы
|
||||
|
|||||
| DemoCode |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 890 Регистрация: 20.10.2005 Где: Россия Репутация: нет Всего: 41 |
А если так:
-------------------- Жить стало лучше, жить стало веселей © И.В. Сталин |
|||
|
||||
| diam |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 348 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: нет Всего: 16 |
Действия не всегда одинаковы. Код утрирован
Действительно, можно. В Python я Exceptions и использовал. Как вариант Ещё будут варианты? |
||||||
|
|||||||
| beroal |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 18.1.2003 Где: Украина Репутация: нет Всего: 3 |
А вы подумайте немного. Надо действия записать в тело функции, тогда всё будет в порядке. Добавлено @ 09:10
А зачем они нужны? |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 2 Всего: 317 |
diam, приём пришёл из C, конструкция:
Хотя, ИМХО, исключения лучше т.к. имеют finally, черезвычайно необходимая вещь если точек вылета много. В PHP finally нет... -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| diam |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 348 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: нет Всего: 16 |
Тогда давайте тереотезировать дальше: когда нужно применять функции?
Sardar, согласен. Исключения вообще удобная штука Это сообщение отредактировал(а) diam - 10.7.2006, 07:47 |
||||
|
|||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: нет Всего: 137 |
пока нет, но говорят что будут |
|||
|
||||
| jzZ |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 17.7.2006 Репутация: 1 Всего: 2 |
Можно просто короче сделать сам синтаксис:
а оптимизация это нечто другое, вот если бы задача была конкретная... хотя хз может я не понял объяснений ':D' Это сообщение отредактировал(а) jzZ - 17.7.2006, 22:43 |
||||
|
|||||
| RobbieV |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.7.2006 Репутация: нет Всего: нет |
Это стандартная конструкция. Во всех блоках условий, до момента true в одном из них, будет вызываться функция actionx(). Если наступает true, то выполняется код для обработки этой ошибки (если нужно), далее переходит сразу к doSomeActionsAtEnd(). Задача не имеет отношения к оптимизации, Вы выбрали конструкцию, которая изначально предназначена для другого. Это сообщение отредактировал(а) RobbieV - 26.7.2006, 17:48 |
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |