Android Weekly Notes Issue #240

Android Weekly Issue #240

January 15th, 2017
Android Weekly Issue #240
Hello, 各位親, 從本篇筆記開始, 以后并不包含Android Weekly的每一篇文章了, 只是選一些我感興趣的做筆記. 想要看全部文章的還請點擊上面的鏈接.

本期內容包括: 一個Android的RxJava教程; 關于測試中的注釋討論; Dagger2的實現細節討論; Kotlin語言設計中和Effective Java相關的點和優化; Reactive app的構建模式, 一個好的model層的重要性; 怎樣寫數據庫測試.

ARTICLES & TUTORIALS

RxAndroid Tutorial

一個RxAndroid的Tutorial, 內容包括:

  • Reactive Programming是什么. -> 把reactive programming比喻成excel里面的表達式.
  • observable是什么.
  • 如何把按鈕點擊和輸入文字改變事件事件變為observables.
  • 轉換.
  • 過濾.
  • 指定線程.
  • 把多個observables聯合成一個.

Clean tests, Part 2: Comments

上一篇文章里作者討論了測試代碼的命名, 這篇討論注釋.
在測試里我們經常會見到這樣的注釋:

  • // GIVEN
  • // WHEN
  • // THEN

注意每一次添加注釋的時候都應該想清楚自己的代碼是不是能夠自解釋, 而不是依賴于注釋. 這條原則同樣適用于產品代碼和測試代碼.

為每一個測試重復這三行其實沒有什么意義, 因為這個順序是顯而易見的.

理想情況下, 簡單的測試并不需要這些注釋就顯得很好看了, 如果是復雜的測試, 一般執行應該是一行, 驗證也應該是一行, 如果需要太多驗證我們應該考慮把它們抽取成多個測試方法. 而關于準備階段, 如果我們真的需要很多準備的代碼, 這是一種code smell, 可能說明我們要測試的這個方法做了太多事情, 可能我們應該先重構一下再進行測試.

我們也應該好好利用setUp()方法, 讓我們的測試看起來更干凈.

最后建議用一些比較好的assert庫讓最后的斷言語句看起來更易懂.

Android Dagger2: Critical things to know before you implement

關于Dagger2的實現, 你應該搞清楚的幾個關鍵點.

  • 實現單例的時候, 如果提供了@Provides方法, 那么@Singleton也要在這個provides方法上聲明, 聲明在類上是沒有用的. (類的單例聲明只和構造@Inject配合使用).
  • 在component中提供了get方法后, 如果這個get方法沒有被調用, 則對象不會被實例化.
  • Scope可以定義在該scope下的單例.

How “Effective Java” may have influenced the design of Kotlin

Kotlin的設計中考慮到的和Effective Java相關的幾個點:

  • Kotlin的構造默認參數值進一步簡化了Builder模式.
  • 更容易創建單例: 用object聲明.
  • 用了data聲明后, 再也不用自己寫equals()hashCode()了.
  • properties自帶了默認的get/set, 使用更加簡潔, 也支持后續擴展.
  • Kotlin中的override關鍵字是強制的而不是可選的.

Reactive apps with Model-View-Intent - Part 1

作者用RxJava + Model-View-Intent (MVI)構建的Reactive App, 也即UI響應狀態變化的App.

首先作者列舉了Android流行的模式MVC, MVP, MVVM, 這里面都會有一個Model. 但是作者發現大多數時候程序并沒有Model這一層.

構建一個好的Model層可以解決很多問題:

  • 狀態.
  • 屏幕方向旋轉.
  • 后退導航.
  • 進程死亡.
  • 不可變和單向的數據流.
  • 可調試和重復的狀態.
  • 可測試性.

最基本的理念就是把這個Model層作為唯一的真實狀態來源.

Testing SQLite on Android – Medium

如何寫SQLite數據庫測試.

LIBRARIES & CODE

Desertplaceholder

一個沙漠空白頁面.

Android-SwitchIcon

Google launcher風格的Switch icon, enable時點亮, disable時灰去.

SlidesCodeHighlighter

一個web應用, 讓你可以把帶有高亮的代碼拷貝進slides.

GithubWidget

一個Github Widget, 顯示Contributions, stars, followers, trending etc.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,540評論 25 708
  • Android Weekly Issue #223 September 18th, 2016Android Wee...
    圣騎士wind閱讀 475評論 0 1
  • 20161214凌晨2點 看到李笑來老師的一篇文章,《每天寫3000字圖個啥》,看完之后熱血沸騰,有種打了雞血的感...
    蘆說閱讀 386評論 9 7
  • 回家,這是我父親和他兄弟們曾經的家,小時候的家,奶奶爺爺(祖父祖母)的家。 南方小城的八月總是那么悶熱...
    方牧閱讀 230評論 0 0
  • 男性患上前列腺增生的危害有哪些?醫生表示,前列腺增生是一種常見的男性疾病,它的出現會給患者的健康造成極大的危害,很...
    lucky玉閱讀 286評論 0 0