#RxJava #Lifecycle #Uber
RxJava2 AutoDispose by Uber was opened
Uber открыла доступ к своей библиотеке AutoDispose. Она позволяете автоматически вызывать
ПОд капотом все выполняется с помощью метода-фабрики autoDisposable() следующим образом:
Поддерживается основные компоненты Android с жизненным циклом, Architecture Components, RxLifecycle, есть расширения для Kotlin и тестов
RxJava2 AutoDispose by Uber was opened
Uber открыла доступ к своей библиотеке AutoDispose. Она позволяете автоматически вызывать
dispose()
вашим ObservableПОд капотом все выполняется с помощью метода-фабрики autoDisposable() следующим образом:
myObservable
.doStuff()
.as(autoDisposable(this)) // The magic
.subscribe(s -> ...);
Поддерживается основные компоненты Android с жизненным циклом, Architecture Components, RxLifecycle, есть расширения для Kotlin и тестов
GitHub
GitHub - uber/AutoDispose: Automatic binding+disposal of RxJava streams.
Automatic binding+disposal of RxJava streams. Contribute to uber/AutoDispose development by creating an account on GitHub.
#NullSafety #Rave #Uber
How Uber Engineering Verifies Data at Runtime with the Annotations You Already Use
Сталкивались ли вы с проблемой, что данные, присылаемые сервером, отличается от ожидаемых вами в описанных вами моделей (классов)? Например, поле которое у вас объявлено как
Не будьте уверены в своем сервере на 100%, так как может что-то поменяться в любой момент и вы начнете ловить странные баги из-за изменений возможных значений в полях. Как итог - трата большого количества времени на поиск проблемы.
Для того чтобы избежать такого рода проблем, в Uber разработали библиотеку Rave. Она генерирует класс, который на основе аннотаций модели, позволяет проверять, что все данные соответствуют вашим ожиданиям, а в противном случае выбрасывает исключение.
Поддерживаются следующие аннотации:
👉
👉TypeDef аннотации:
👉Аннотации ограничений на значения:
👉 Собственные аннотации @MustBeFalse и @MustBeTrue, которыми могут быть аннотированы методы, проверяющие более сложные условия для данных внутри модели.
Валидация кода выглядет следующим образом:
Rave эффективна для интеграции с библиотеками, которые предоставляют сериализованые данные (например JSON), а вы их на стороне клиента парсите в объекты языка. Яркий пример REST сервис, с которым вся работа в Android приложения осуществляется на основе библиотеки Retrofit, причем уже есть готовый конвертер - RaveConverterFactory.
How Uber Engineering Verifies Data at Runtime with the Annotations You Already Use
Сталкивались ли вы с проблемой, что данные, присылаемые сервером, отличается от ожидаемых вами в описанных вами моделей (классов)? Например, поле которое у вас объявлено как
@NonNull
вдруг пришло null
? Или значение одного из полей моделей должно быть в пределах от 0
до 1
, но сервер прислал 1.5
?Не будьте уверены в своем сервере на 100%, так как может что-то поменяться в любой момент и вы начнете ловить странные баги из-за изменений возможных значений в полях. Как итог - трата большого количества времени на поиск проблемы.
Для того чтобы избежать такого рода проблем, в Uber разработали библиотеку Rave. Она генерирует класс, который на основе аннотаций модели, позволяет проверять, что все данные соответствуют вашим ожиданиям, а в противном случае выбрасывает исключение.
Поддерживаются следующие аннотации:
👉
@NonNull
и @Nullable
👉TypeDef аннотации:
@StringDef
, @IntDef
и @LongDef
👉Аннотации ограничений на значения:
@IntRange
, @FloatRange
, @Size
и др.👉 Собственные аннотации @MustBeFalse и @MustBeTrue, которыми могут быть аннотированы методы, проверяющие более сложные условия для данных внутри модели.
Валидация кода выглядет следующим образом:
void validateMyModel(SimpleModel myModel) {
try {
Rave.getInstance().validate(myModel);
} catch (UnsupportedObjectException e) {
// handle unsupported error case.
} catch (RaveException e) {
// handle rave validation error.
}
}
Rave эффективна для интеграции с библиотеками, которые предоставляют сериализованые данные (например JSON), а вы их на стороне клиента парсите в объекты языка. Яркий пример REST сервис, с которым вся работа в Android приложения осуществляется на основе библиотеки Retrofit, причем уже есть готовый конвертер - RaveConverterFactory.
#RxJava #Uber #Debug
RxDogTag 0.2.0
Библиотека, которая поможет вам легче находить где произошел крэш в вашей Rx цепочке
RxDogTag 0.2.0
Библиотека, которая поможет вам легче находить где произошел крэш в вашей Rx цепочке
GitHub
GitHub - uber/RxDogTag: Automatic tagging of RxJava 2+ originating subscribe points for onError() investigation.
Automatic tagging of RxJava 2+ originating subscribe points for onError() investigation. - uber/RxDogTag
👍1