我名字:John
目前撰寫Android程式碼居多,主要使用Kotlin為主,Java也有涉略,使用起來我還是比較喜歡Kotlin,因為很多功能可以讓程式碼變得很乾淨,可讀性高,像Coroutines、also、let、apply、ktx擴展程式等等。
程式撰寫以Clean Code(乾淨程式碼)為主,盡量不過度設計一個功能
習慣使用以下
- Dependency Injection Architecture Pattern(DIAP注入依賴架構設計,分為手動、Dagger與Hilt),目前使用Hilt為主,因為非常"乾淨",使用後非常喜歡
- MVC,如果使用MVVM會導致程式碼更複雜的情況下,會改用此
- MVVM,現在幾乎以此為主要的設計模式
- Separation of concerns,SoC(關注點分離),盡量以Encapsulation(封裝)的方式來設計,目前撰寫的程式碼Fragment與Activity控制在50~150行以下,讓程式碼可讀性更高
- 客製化UI物件,這個應該是我最習慣做的,因為常常被要求要客製化功能,內建絕對沒提供的功能,起初多以繼承方式客製化UI,不過後面學會分離關注點以及MVVM後,繼承的方式除非必要,不然比較少這樣使用了,因為靈活性與可讀性的關係
- 多執行緒,習慣以Kotlin Coroutines來設計,需要時會使用Flow來做資料傳遞,對於RxJava僅有初步的了解,簡單的使用方法
- TDD,先前有學習過Outside In風格,由外向內的TDD,White Box Testing(白盒測試),但目前拿到的專案皆是已開發一半以上,所以比較少使用此方式,大多以Classicist風格,Black box Testing(黑盒測試),僅測試最終結果
- Room(本地數據)使用搭配ViewModel並運用Hilt,讓程式碼極大的縮減很多
- retrofit2(網路資料讀取)使用時,會先以Mockoon軟體才做數據測試,測試架構正確後,才會導入實際功能
- Fragment設計,現在幾乎都以Navigation Fragment來做設計,因為可讀性比較高,也有一個統一管理的地方,Activity與Fragment皆以ViewModel傳遞
- Memory Leaks(記憶體洩漏),對此也有去了解過,盡量少用靜態變數,使用Hilt時,Scope(範圍)會拿捏好哪些該放在哪個生命週期,以及避免執行緒導致嚴重的記憶體洩漏問題,除非有理由,否則基本上會把Code放在UI Thread為主
從有一次看到一位過外老師的程式後,是我第一次看到一個功能龐大的App,程式碼如此乾淨,分離關注點做得非常好,架構也非常好理解,也沒有過度設計,眼睛一眼看過去就大概能猜到功能,也沒有過度繼承的使用
常常看到有些程式碼會過度設計、繼承,那位老師的一句話,印象很深,如果一個程式碼幾百行都需要花很多秒,才能知道在寫什麼,幾千行甚至幾萬行的時候,這個Code的可維護性就會變很低,Bug也會變得很難尋找
這也是改變我程式撰寫的啟發,慢慢去學習那些架構設計、設計模式,目前Android大多以DIAP架構搭配MVVM設計模式為主,但如果MVVM讓程式碼複雜化的時候,且MVC會簡化時,將改用MVC
最終目的只有一個Clean Code(乾淨程式碼)
其中還有簡單涉略iOS(Swift搭配SwiftUI、Object-c搭配UIKit),雖然已做出一個作品上架,但目前還在學習中,因為是趕鴨子上架,先前寫出來的架構不是很好
Qt也有點單涉略,也有一個作品出來,不過也是趕鴨子上架,架構寫的不是很好,也還在學習中
目前深入了解比較多的是Android,之後也會多花時間去深入了解iOS
因此目前文章,近期如果有更新大多會以問題解決為主,而不是深入探討
目前主要專業
- Android(Java、Kotlin)
- iOS(Objective-C+UIKit、SwiftUI)
- Qt(C++)
廣告