1. 程式人生 > >個人對RxJava的看法,應該用它嗎?

個人對RxJava的看法,應該用它嗎?

RxJava是很好的工具,封裝了許多規則

優點1:簡化邏輯

比如要巢狀請求的時候,這個時候用flatMap操作符就可以實現優雅的鏈式巢狀請求

優點2:簡化程式碼

他的操作符封裝了規則,我們用一個操作符就可以實現許多功能

比如要打包網路請求,這個時候用zip就可以打包資料來源

優點3:最方便的執行緒切換

這些東西,自己當然也可以實現,用程式碼量去取代這一個個操作符,自己實現也會複雜化邏輯。

所以面臨兩個問題:

程式碼量膨脹後的架構的問題

邏輯複雜後的解耦問題

問題1:程式碼量膨脹

rxjava確實可以替你解決一定的冗餘程式碼,但是面對巨型專案,架構是不可避免的問題。所以如果想不用rxjava,必須做好良好清晰架構、程式碼拆分的準備

問題2:邏輯複雜化

比如巢狀請求,如果不用rxjava,你需要在第一個請求的回撥中再進行另一個請求。而rxjava則是圍繞資料來源做了一定的同步工作,所以使得你可以在一條鏈上,整個邏輯就看起來特別清晰。其實這個鏈式呼叫自己程式碼手寫完全可以實現。不僅如此,你還可以寫成另外的風格。所以rxjava幫你處理好了複雜的邏輯,這些邏輯如果自己寫需要不俗的程式設計水平。可是事實上,設計模式,面向程式設計,面向切面思想等解耦套路,這種也是優秀程式設計師不可缺少的東西。

問題3:執行緒切換

rxjava執行緒切換特別厲害。可是多執行緒程式設計也是優秀程式設計師必備的東西。鎖(sync,reen,cas等),併發容器的使用(執行緒池 等),採用aqs寫出自己的併發容器( 系統有些併發容器有坑)等,這些東西是他沒有幫你做的。

所以rxjava可以說是提升程式設計師段位的bug。封裝了許多優秀程式設計師也要費一番手腳的東西。

推薦學習使用。

也是簡化程式碼邏輯的神器。現在流行一套商業化程式碼:rxjava+retrofit+glide。

真的很不錯。

但是我借鑑了rxjava的程式碼思維和retrofit的封裝思維也實現了一套,雖然不好,但是還算順手,所以這些東西都棄了。以前我也是這套商業化框架使用者中的一員。(其實我是懶得學新東西了,這樣不好)

對於新手,處在用的階段,推薦還是學學rxjava和這套商業化框架吧。可以因此使得水平得到一個快速提升。

對於中手,處在一個體悟原理的階段,你可以拋棄rxjava和這套框架,參考他們的思維,用樸素的東西,寫出和他們效果相仿的東西;也可以深挖這套框架的原理,讓這套框架在你的手上發揮出非常非常強大的力量。

對於高手,可以迴歸rxjava了,畢竟,能用一行程式碼寫的東西,為什麼要用100行呢?

總之,rxjava,是當之無愧的神器,我們沒有理由不使用它。