>… это Принцип подстановки Лисков. Интерпретацией этого принципа может быть следующее: Для любого
> класса, который в будущем может понадобиться переопределить другим классом, должен быть определен
> “базовый” интерфейс. И это позволяет разработчикам использовать другую реализацию какого-то класса,
> определив методы этого интерфейса.
Специально посмотрел в оригинал и там тоже это есть. И тут же ссылка на википедию с правильным определением.
ИМХО, то что main contributor фреймворка не понимает LSP уже должно много говорить о фреймворке.
Мне тут коллега подсказывает смешную ситуацию: представьте себе, что топикстартер «пробрасывает по каскаду» какое либо свое значение, а потом в ходе какого-либо рефакторинга кто-то покатчит исключения в середине «каскада».
Конструктив:
Да, исключение — это не ошибка. Это, блин, механизм обработки ошибок(и только ошибок, его нельзя использовать для flow control, как минимум потому, что этот механизм довольно медленный). Или как сущность — объект несущий информацию об ошибке.
И нужен этот механизм для того чтобы возвращать вверх по стеку информацию о произошедшей ошибке. Для того чтобы ваша функция могла возвращать только семантически валидные данные без левых «кодов ошибок».
Я так подозреваю, что в ПХП механизм исключений появился далеко не сразу и поэтому до сих пор много legacy-кода, который использует коды ошибок. Но это не повод смешивать оба подхода, и тем более использовать для управления потоком выполнения (потому что это все-таки форма goto и такое использование быстро приведет к спагетти-коду).
> исключения — это конструкция языка позволяющая управлять потоком выполнения
> Их основное предназначение: пробрасывать по каскаду.
> ошибка — не поправимая ситуация;
>исключение – позволяет прервать выполнение каскада функций и пробросить некоторую информацию. Что-то
> вроде глобального оператора return. Если у Вас нет каскада, то вам достаточно использовать if или return.
Это феерично.
Уважаемый, вы бы хотя бы википедию посмотрели перед тем как херню нести.
P.S. При всем моем уважении к веб-разработчикам, но почему такое всегда в блоге PHP?
Как уже писали выше — есть халявщики, а есть те кому нужны знания. Не встречал ни кого из второй категории у кого были бы проблемы с текстами на английском.
> класса, который в будущем может понадобиться переопределить другим классом, должен быть определен
> “базовый” интерфейс. И это позволяет разработчикам использовать другую реализацию какого-то класса,
> определив методы этого интерфейса.
Специально посмотрел в оригинал и там тоже это есть. И тут же ссылка на википедию с правильным определением.
ИМХО, то что main contributor фреймворка не понимает LSP уже должно много говорить о фреймворке.
2. martinfowler.com/books.html#dsl
3. Первичное гугление — www.google.ru/url?sa=t&rct=j&q=finance%20domain%20specific%20language&source=web&cd=4&sqi=2&ved=0CD4QFjAD&url=http%3A%2F%2Fwww.st.ewi.tudelft.nl%2F~arie%2Fpapers%2Ftalks%2Frisla.ppt&ei=DxqgToWgIs3S4QTfu_jiBA&usg=AFQjCNH7MaGUiNwajDZLCocF-9NTswIByA&cad=rja
sum(
for i = 92 to 2011
yield sqrt(i)
) / 4
Да, исключение — это не ошибка. Это, блин, механизм обработки ошибок(и только ошибок, его нельзя использовать для flow control, как минимум потому, что этот механизм довольно медленный). Или как сущность — объект несущий информацию об ошибке.
И нужен этот механизм для того чтобы возвращать вверх по стеку информацию о произошедшей ошибке. Для того чтобы ваша функция могла возвращать только семантически валидные данные без левых «кодов ошибок».
Я так подозреваю, что в ПХП механизм исключений появился далеко не сразу и поэтому до сих пор много legacy-кода, который использует коды ошибок. Но это не повод смешивать оба подхода, и тем более использовать для управления потоком выполнения (потому что это все-таки форма goto и такое использование быстро приведет к спагетти-коду).
> Их основное предназначение: пробрасывать по каскаду.
> ошибка — не поправимая ситуация;
>исключение – позволяет прервать выполнение каскада функций и пробросить некоторую информацию. Что-то
> вроде глобального оператора return. Если у Вас нет каскада, то вам достаточно использовать if или return.
Это феерично.
Уважаемый, вы бы хотя бы википедию посмотрели перед тем как херню нести.
P.S. При всем моем уважении к веб-разработчикам, но почему такое всегда в блоге PHP?
Но да, битбакет совсем не гитхаб ;(