Лучший способ построить библиотеки в Scala

Мы ищем лучшую практику для разработки бизнес-предложений в Scala, проблемы:

1.- С исключениями: код, использующий метод, который генерирует исключение, не знает, что должен обрабатывать исключение, или если исключение не обрабатывается немедленно. Это должно быть обработано на верхнем уровне, например, чтобы показать специальную ошибку. Предположим, что из библиотеки Login вы отправляете "user" и "password", библиотека возвращает LoggedUser со всей информацией о пользователе, но если пользователя не существует, библиотека выдает BadPasswordExeption или UserNotFoundException. В конце концов, если я использую эту библиотеку, я не знаю, какие исключения выдает библиотека. Я могу проверить источник для расследования, но дело не в этом.

2.- Или попробуйте: проблема в том, что вы должны проверить результат каждого метода вызова. Например, с помощью метода входа в систему вы должны проверить его, если он был успешным, выполните другое действие, но если он потерпел неудачу... он потерпел неудачу для?, И как вы можете распространить ошибку, чтобы обработать ее на верхнем уровне, чтобы ответить правым ответ (может быть http-кодом или сообщением об ошибке). В худшем случае бизнес-метод вызывает три метода, которые возвращают Try[Result], поэтому вы должны проверить результат первого, чтобы выполнить второй, а затем выполнить третий.

1 ответ

Если вы хотите, чтобы ваша библиотека имела полностью функциональный стиль программирования, вы не должны использовать исключения. Они приводят к неопределенному типу возвращаемого значения функции, который практически не является функцией в этом смысле.

Я не вижу вопроса ни того, ни другого. Если вы берете пример входа в систему, каковы варианты обработки ошибки? Если вы выбрасываете исключение, вы все равно должны с ним справиться, так же как и с любым из них.

Однако это не тема для Stackru, потому что ваш вопрос в основном является дискуссией. Не существует "правильного" пути в том смысле, что все остальные пути неверны. Это полностью зависит от вашего конкретного бизнес-кейса. Вы не должны использовать непрактичные концепции - например, только val - просто для соответствия функциональному программированию. Если нет недостатка в использовании переменной.

Другие вопросы по тегам