В этой статье мы познакомимся с некоторыми полезными знаниями, которые я получил, работая со слоем прецедентов в приложениях для 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 долларов в месяц, и если вы используете эту ссылку, я получаю небольшую комиссию.