![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
teroni |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 15.5.2007 Где: Днепропетровск Репутация: 8 Всего: 22 |
Ну вот, уже свели тему к большим проектам. А большие проекты - это те, которые делает команда программистов (как правило). А в команде - это вопрос договорённостей по стилю написания кода. Принято писать с исключениями - значит будешь, никуда не денешься. Договоритесь, что они не нужны - не будете использовать. |
|||
|
||||
Sentox |
|
|||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Нет, не совсем. Это другая парадигма безопасного программирования, чем то похожа ситуация противопоставления функциональной парадигмы программирования - парадигме ООП. PHP язык развивающийся с процедурного, поэтому как говорится каждому методу своё место. ![]() В больших проектах больше ошибок, поэтому логичней поставить развитую структуру отлова потока ошибок, при чём чем более разнообразных предметных концепций тем больше стоит внедрять логику исключений. Хотя если используешь парадигму исключений, я бы использовал бы и далее да же на сайте визитке. Написания кода в этом случае почти не увеличивается, почти - это только определение самих классов (типов) ошибок и то минимум пустых. Хммм ... я бы да же сказал что парадигма статусов ошибок что исключений в написании кода практически одинакова. Так что это кто как любит: кто копчёную колбасу, а кто и грибочки под водочку ![]() Это сообщение отредактировал(а) Sentox - 5.7.2012, 13:59 |
|||
|
||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
вот маленький пример
или так
ну и чем это хуже исключений ![]() Это сообщение отредактировал(а) Gold Dragon - 5.7.2012, 14:21 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
Zerstroer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.8.2007 Где: Алма-Ата Репутация: 1 Всего: 3 |
Тем, что у вас нет автоматического отлова аварийной ситуации. Все вызовы Error инициированы вами в ручном режиме. Это предвиденные вами ошибки. Вы же понимаете, что это далеко не все варианты аварийного развития событий. Пример на псевдокоде :
Теперь предположим, что по неведомым причинам у вас каждый раз, сразу же после соединения срывается коннект к базе. Что в итоге получим? В итоге получаем Error('Ошибка при запросе'). Что начинаем делать? Я бы начал тщательно и внимательно анализировать SQL запрос. А это в данной ситуации - действие неверное, как следствие трата времени, сил, нервов и т.п. Пример далек от идеала, но определенную ясность, я думаю, внесет. Это сообщение отредактировал(а) Zerstroer - 5.7.2012, 14:34 -------------------- In silico |
|||
|
||||
Sentox |
|
||||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Второй не красивый, первый лучше.
Не красив тем что обязывает знать о кодах для определённых ошибок. В этом случает DelenieNaNol более информативно, а если так showMessageDelenieNaNol() ещё информативней, но опять же если требуется большей информации: имя файла, строка ошибки, трассировка для ошибки (очень полезных механизм) и добавление своих данных (например сообщение об ошибке изменить или добавить дополнительную информацию) и тем более общей функциональности тогда:
Вот код с исключением, код конечно не выявляет все стороны исключений но всё же ![]()
Если убрать коментарии написания кода меньше. И при написании кода я концентрировался на нормальном пути работы алгоритма, а в точках ошибок только ставил псевдокод. В данном случае конечно это не особо видно, но каогда у тебя сложный алгоритм обработка ошибок отвлекает. Это конечно можно делать и без исключений но в данном случае все типы исключений обрабатываются одинаково и в одном месте. Так же можно применять по типам ошибок свои обработчики. И что ещё полезней, при генерации ВЫ можете совершенно не перехватывать в этой функции ошибки а дать возможность вызывающим это сделать, что даёт возможность более удобно расслаивать систему. Это сообщение отредактировал(а) Sentox - 5.7.2012, 15:22 |
||||
|
|||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
бездоказательно. А вот наличие других проблем у вас вполне видно по вашей же цитате ниже.
А при том, что хреновый вы программист, если не в состоянии выполнить обобщение. Вас не заставляют чинить сетевую карту программно, но обработать отсутствие подключения к БД вы обязаны. Вы же в виду определенных проблем не можете понять что есть ошибки неустранимые, но требующие обработки-реакции программы на них. Для вас есть только один способ борьбы - "устранить нештатные ситуации" ![]() P.S.
Архивы почитайте ![]() В том числе и на ваши же вопросы. Тот факт что вы не понимаете написанного не отменяет его наличия ![]() -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Ну в принципе имея таблицу кодов, второй вариант получается достаточно компактный. Практически такой же как и исключения. В принципе и логи формировать тоже можно, добавив в обработчик номер строки и имя файла типа такого
ну или даже так
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
Sentox |
|
||||||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Можно, конечно. Но для поддержки другими программистами да и самому нужно будет запоминать эти коды. А если они ещё будут раздуваться непомерно или чего хуже изменяться (в этом случае по всему проекту приидётся менять), то поддержка ошибок будет обременительной, что скажется на их упрощении при кодировании и опущении программистами обработки их. Можно конечно немного упростить схему и передавать константы описывающие код например ARITHMETICAL_STATUS_ERROR, но всё равно не избавляет от дублирования кода и гибкости использования (например отдать обработку на уровень выше). Это сообщение отредактировал(а) Sentox - 5.7.2012, 16:28 |
||||||
|
|||||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Gold Dragon, в совокупности с наследованием, исключения предоставляют мощную систему для работы проекта. Поясню на примере псевдокода:
|
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
Gold Dragon, исключения с одной стороны, и любые другие средства, включая Ваши красивые классы, с другой - разные подходы к обработке ошибок. Исключения - помощь языка в декомпозиции при обработке ошибок. Написав кучу классов вы, возможно, достигнете некоторого уровня декомпозиции, но не настолько, как с использованием исключений. Результат отказа от исключений - больше работы, но менее управляемый код.
Это в теории. На практике надо от параметров Вашего проекта отталкиваться, что бы принять решение. Не ругайтесь, а попробуйте понять. Мы терпеливые, объясним столько, сколько потребуется.
Fortop ведь тут прав, но он не обругал Вас, а хотел стимулировать Вашу мысль ![]() |
|||
|
||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
![]() да(!) Просто складывается впечатление что разработчики PHP хотят угнаться за ..... теми же СИшниками или Дельфистами... Хотя... вернувшись к Делфи я понял что PHP имеет очень много "вкусностей" которых очень не хватает Делфи..
![]() ![]() ![]() Aliance, даже по другому и не рассматриваю ;) Но ведь всё равно тут я не увидел явных фанатов исключений ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
кстати,... "хреновый вы программист" - это как?
![]() ![]() ![]() Добавлено через 1 минуту и 51 секунду skyboy, хочу использовать. но хочу понять и преимущества ![]() PS согласен, фанатизм это болезнь... -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Sentox |
|
|||
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Я не о том знать или нет (здесь безоговрочно что следует), смысл в том что код 1002 ничего осмысленного не несёт, а если он будет описан например константой мало того что будет читабельный код, так же его можно будет изменить легко, только в одном месте определения константы. В исключениях коды или описательные константы заменют типы (классы), при чём подтипы могут наследовать от других так сказать "кодов" функциональность или расширять её, например использование другого текста или добавления своего, что очень затруднительно со скалярными величинами. Это сообщение отредактировал(а) Sentox - 5.7.2012, 22:55 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Sentox, конечно ты прав.. но это уже конкретный подход к вопросу...
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |