
Evgeniy
05.03.2018
17:53:57
зато мы не обрабатываем результаты вызовов
но мы сделали первый if для типа исключения, второй if чтобы понять а кто его реально выкинул

Alan
05.03.2018
17:54:22
наверно поэтому в яндекс кассе любая ошибка это
Упс что то пошло не так )))))

Maksim
05.03.2018
17:54:35
Нахер жить без исключений) пущай всякие голанги лапшекод требуют)

Google

Evgeniy
05.03.2018
17:54:37
ну вывести упс это одно
надо ее еще корректно залогировать чтобы потом исправить

Артур Евгеньевич
05.03.2018
17:54:47
какая разница кто его выкинул

Maksim
05.03.2018
17:55:02

Артур Евгеньевич
05.03.2018
17:55:21
я пишу слабосвязанный код, у меня каждый компонент использует другие только чтобы получить то что нужно, а внутрення ебала не собо интересует
+ исключений в том что я могу просто прокидывать их на урвоень выше

Evgeniy
05.03.2018
17:55:36
в другом нет

Maksim
05.03.2018
17:55:46

Evgeniy
05.03.2018
17:55:56
как о одном из решений
но это плодит лишний класс

Google

Evgeniy
05.03.2018
17:56:40
и именно так сейчас и решеют проблему

Adel
05.03.2018
17:56:52
лишний класс!!!

Evgeniy
05.03.2018
17:57:09
но я написал о ситуации когда 2 функции могут выкинуть именно исключение одного базового типа, InvalidArgumentException или RuntimeException

Артур Евгеньевич
05.03.2018
17:57:26
goto тоже может на уровень вверх кидать )
на конкретнео место в коде...а исключением я просто могу преобразовать "ошибка битого сектора конкретной хуйни" в "ошибку с жестким диском" а ее в "ошибку при записе файла" а ее в "ошибку при сохранении" и т.д и уже действовать и разруливать эти траблы там где это уместно, а не писать лапшу в одом месте

Maksim
05.03.2018
17:57:27
Притягиваешь проблему за уши

Evgeniy
05.03.2018
17:57:33
лишний класс!!!
дело не в экономии на списчка а в том что это усложнение кода
который может усложнить и увеличить в размерах по

Adel
05.03.2018
17:58:11
у меня класс исключения создается на каждую команду

Evgeniy
05.03.2018
17:58:11

Maksim
05.03.2018
17:58:17
Расскажи это любителям обмазаться голангом. Реально, нахер так жить?)

Evgeniy
05.03.2018
17:58:20
и не париться с ее обработкой и формированием уровнем выше
причем языков на которых базируется огромное количество кода

Артур Евгеньевич
05.03.2018
18:01:07

Evgeniy
05.03.2018
18:01:14
и разработанного по которое работает

Артур Евгеньевич
05.03.2018
18:01:16
и потом через 10 функций ее прокидывать?

Evgeniy
05.03.2018
18:01:26

Артур Евгеньевич
05.03.2018
18:01:29

Maksim
05.03.2018
18:01:46
Хз чем проще без исключений. Сплошная жопоболь

Артур Евгеньевич
05.03.2018
18:02:01

Google

Evgeniy
05.03.2018
18:02:03
никто не говорит что надо писать без исключений
но надо учитывать и другие практики

Артур Евгеньевич
05.03.2018
18:02:09
у нас был на преокте судя по гит блейму фанат такого кода
class DummyEntityProvider extends DataEntityProvider
{
public function initialize(array $data = []) {
}
/**
* @return array|bool
*/
protected function provideNextData() {
return false;
}
}

Evgeniy
05.03.2018
18:02:19
и знать и возможно иногда они более удобные

Артур Евгеньевич
05.03.2018
18:02:44

Evgeniy
05.03.2018
18:03:16
ну можно писать хипстерский код 2018 только в пхп хипстоты мало
и исключения придуманы далеко не в 2009 году
поэтому 2009 год тоже как то не уместно

Like
05.03.2018
18:03:55

Evgeniy
05.03.2018
18:04:45
ну вот классический пример заблуждения это валидация

Артур Евгеньевич
05.03.2018
18:05:01
https://refactoring.guru/ru/replace-error-code-with-exception

Evgeniy
05.03.2018
18:05:14
читай там ниже написано

Артур Евгеньевич
05.03.2018
18:05:36
да я читал эт

Evgeniy
05.03.2018
18:05:49
что исключение надо юзать в сообщениях об ошибке или критических ситуациях
а не для возврата результата из функции

Sergey
05.03.2018
18:06:10
но лучше исключения обрабатывать как можно раньше

Like
05.03.2018
18:06:11
Мне вот больше интересное другое
Почему вы рассматриваете это с точки зрения языка с динамической типизацией?

Evgeniy
05.03.2018
18:06:12
там не слова нет про использование исключений для возврата из функций

Google

Sergey
05.03.2018
18:06:14
а еще лучше не бросать)

Like
05.03.2018
18:06:19

Артур Евгеньевич
05.03.2018
18:06:19

Evgeniy
05.03.2018
18:06:38

Like
05.03.2018
18:06:46

Evgeniy
05.03.2018
18:06:49
вместо array|bool
он должен делать то что он обещает сделать
если ты написал что вернешь результат то да он должен вернуть результат или крашиться

Артур Евгеньевич
05.03.2018
18:09:36
а ты предлагаешь не крашитсья а вернуть false

Evgeniy
05.03.2018
18:09:59
но ты можешь написать что он вернет нечто с результатом и зависимости от ситуации решать продолжать ли дальше

Артур Евгеньевич
05.03.2018
18:10:16
или еще хуже -замаскирвоанный нуллОбджект

Evgeniy
05.03.2018
18:10:31
нулл обджект это из другой песни
и частный случай maybe
а не either

Артур Евгеньевич
05.03.2018
18:10:54

Evgeniy
05.03.2018
18:11:13
это не обязательно nullObject
и сам nullObject маскирует null

Google

Evgeniy
05.03.2018
18:11:59
а не его маскируют
в качестве примера популярный пример это валидатор
кто то из умных дядек писал что валидатор не должен возвращать исключения довольно большие статьи и писал объяснения по этому поводу
и когда людям начинаешь это говорить, они или соглашаются или говорят что ты не прав и просто перестают говорить типо сказать им нечего уже
не возвращать верней а выкидывать
в теории ты можешь и вернуть исключение через return а не выкинуть его через throw
точно также как и пример работы с фс и выкидывания исключений может в одной ситуации действительно требовать исключения
например нету файла sqlite.db
а в другой не выкидывать исключения и просто нету файла с сессии
поэтому решать за то надо ли выкидывать исключение должен решать не код какой то библиотеки
а конкретно твой код
ну либо будет библиотека выкидывать кучу исключений ты будешь все их слушать (считай обрабатывать) и потом выкидывать свои исключения в случае необходимости


Maksim
05.03.2018
18:22:23
в теории ты можешь и вернуть исключение через return а не выкинуть его через throw
Код станет понятнее, да)
По поводу умных дядек: высасывать проблему из пальца - это хорошо. Но бесполезно.
Валидатор - 1 из немногих кейсов, которые требуют возврата результата только в силу специфики того, что негоже юзверю построчно ошибки вываливать. А все сразу лучше дать.
И то это можно решить исключениями) и ни что, кроме времени больших дядек, не пострадает.

Evgeniy
05.03.2018
18:23:13
$error = new ValidationException;
$error->add('invalid username');
$error->add('invvalid pet name')'
throw $error;

Maksim
05.03.2018
18:24:02
Спасибо, кэп) я про сие написал в конце)

Evgeniy
05.03.2018
18:24:23
я видел и это не занимает много времени
суть не в том сколько времени

Maksim
05.03.2018
18:24:48
Имелось в виду время, потраченное на статьи :)