3.2 讓函數更好調用
可讀性優化 => 命名參數
當指明一個參數的名稱的時候,爲了避免混淆,那它之後的所有參數都要標明名稱。
避免過多的函數重載 => 默認參數值
消除靜態工具類 => 頂層函數和屬性
3.3 給別人的類添加方法:擴展函數和屬性
實質上,擴展函數是靜態函數,她把調用對象作爲他的第一個參數。調用擴展函數,不會創建適配對象或任何運行時的額外消耗。注意,因爲是靜態函數,所以它並不允許你打破它的封裝性,同時也意味着擴展函數不能被子類的重寫。
這也是kotlin的一大特色,可以平滑的與現有的代碼集成。不過由於存在偶然性的命名衝突。所以它不會自動的在整個項目的範圍內生效。爲了使用,需要進行導入,可以使用關鍵字as來修改導入的類或者函數的名稱。
當然了,我們知道類中的屬性,其實就是setter ,getter ,加字段嘛,擴展函數當然也可以進行類的屬性的擴展,或者說是使用類似類屬性的調用方式來調用getter,setter函數,儘管它們被稱爲屬性,但是它們沒有任何狀態,因爲沒有合適的地方來存儲它。
3.6 讓你的代碼更整潔:局部函數和擴展
好代碼的重要標準之一就是減少重複代碼,不要重複你自己(DRY)。
但是在一種情況下,比如函數中存在的重複代碼,如果將這些抽象成類的方法,可能顯得多餘,使得類看得臃腫。
Kotlin給出的解決方案是在函數中嵌套提取的函數。