В этой статье мы познакомимся с некоторыми полезными знаниями, которые я получил, работая со слоем прецедентов в приложениях для Android.
Это будет довольно коротко и прямо по делу, так что не теряйте концентрацию и оставайтесь со мной.
Стрелка твой друг
Это довольно расширенный путь, и это из-за чего-то. Стрелка — это библиотека для Android, которая поставляется с классами для обработки ошибок в удобочитаемой и выразительной форме благодаря функциональному программированию.
С типом Both вы можете настроить логику обработчика ошибок за считанные секунды, чтобы использовать ее на уровне вашего варианта использования.
typealias Result<T> = Either<Exception, T>
Помимо этого, эта библиотека имеет множество функций, и вам не нужно импортировать их в свой проект, если они вам не нужны.
Вам не нужно наследование или делегаты, будьте проще
Я видел множество реализаций, использующих наследование или делегаты, чтобы иметь уровень варианта использования, который в конце дня просто вызывает метод внутри try/call
и просто возвращает результат.
Если вам нужна более высокая сложность, это нормально, но в большинстве случаев что-то вроде следующего фрагмента кода более чем достаточно.
typealias Result<T> = Either<Exception, T> suspend fun <ResultType> tryCall( dispatcher: CoroutineDispatcher = Dispatchers.IO, call: suspend () -> ResultType ): Result<ResultType> = withContext(dispatcher) { try { call().right() } catch (e: Exception) { Log.e("tryCall ", e.stackTraceToString()) // FirebaseCrashlytics.getInstance().recordException(e) e.left() } }
Стандартный код
Я устал постоянно повторять один и тот же код для каждого варианта использования, хотя благодаря GitHub Copilot это теперь не такие утомительные задачи.
В любом случае, я просто сошлюсь на замечательную статью Дениса Брэнди, в которой он рассказывает о некоторых подходах, которым можно следовать, чтобы этого избежать.
Если вы хотите прочитать больше подобного контента и поддержать меня, не забудьте проверить мой профиль или дать Medium шанс, став участником, чтобы получить доступ к неограниченным историям от меня и других писателей. Это всего 5 долларов в месяц, и если вы используете эту ссылку, я получаю небольшую комиссию.