#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