你的代碼質量應該隨著經驗的增加而提高,在本文作者基于 Android 開發者六年間,其都學到了什么?
作者 | Mrudula
譯者 | 彎月,責編 | 屠敏
以下為譯文:
六年來,我為多家公司編寫過各種應用程序。你編寫代碼或處理代碼庫的文化和方式會隨著你的經驗而不斷變化。
你的代碼質量應該隨著經驗的增加而提高,否則就需要反思了。
選擇正確的架構
如果你是從頭開始開發應用程序,那么就會有許多優勢。
其中之一就是選擇正確的體系結構。通常,我們喜歡將所有內容都寫在同一個activity文件中,因為這樣做很容易。但是,當你的代碼量增多時,這就會成問題。你的代碼庫會變得十分龐大,每個文件包含的代碼行數也會非常龐大。
考慮到代碼的性能和維護,在早期階段選擇正確的體系結構,才是明智的做法。
MVC、MVP、MVVM和MVI等許多體系結構可幫助 Android 開發人員輕松維護、測試和開發新功能。
上圖說明了在設計完應用程序后,所有模塊應如何相互交互。盡管這完全取決于你的組織,但你也有可能會有機會選擇適合應用程序的體系結構。
但是,強烈建議你選擇適合需求的特定體系結構。
關于哪種架構最好這個話題也是眾說紛紜。
根據開發人員指南:
“沒有任何一種方法能夠編寫出適用于每種情況的最佳應用程序。話雖如此,對于大多數情況和工作流來說,這種推薦的體系結構都是一個很好的起點。”
善加利用Android Studio
Android Studio 提供了最快的工具,可以為每種類型的 Android 設備構建應用程序。
不幸的是,我們僅探索了該IDE的一小部分。Android Studio附帶了許多工具,以下是我們在日常開發中應使用的各種工具。
Visual Layout Editor
在這款Layout Editor中,我們可以將UI元素拖到可視化設計編輯器中,并以此來快速構建布局,同時無需手動編寫布局XML。
這款設計編輯器可以在各種 Android 設備和版本上預覽布局,而且你還可以動態調整布局的大小,以確保在各種屏幕尺寸上正常工作。
當你使用這款Layout Editor構建新布局時,尤其能感受到其強大之處。
APK Analyzer
我們可以利用 APK Analyzer 減少花在調試應用程序內DEX文件和資源問題上的時間,而且還可以減小APK的大小。此外,你還可以在命令行中使用 APK Analyzer 。
APK Analyzer 的功能包括:
-
查看APK中文件的絕對大小和相對大小,例如DEX和Android資源文件。
-
了解DEX文件的組成。
-
并排比較兩個APK。
Fast Emulator
如果你需要應對各種版本的 Android, 而且還希望在各種 API 級別上測試你的應用,那么這款模擬器甚至比真正的設備還好。
這款模擬器提供了Android設備所具備的所有功能。你可以模擬打電話和發短信、指定設備的位置、模擬不同的網絡速度、模擬旋轉和其他硬件傳感器、訪問 google 應用商店等等。
與在物理設備上的測試相比,從某種程度上來說,在模擬器中測試應用程序更快捷、更方便。
Profilers
Android Profiler工具提供了實時數據,可以幫助你了解應用使用CPU、內存、網絡和電池資源的情況。
雖然我們有各種的分析器,例如CPU分析器、內存分析器、網絡分析器和能耗分析器。
但 Android Profiler 可以兼容Android 5.0(API級別21)及更高版本。你可以使用 Android Studio 中的高級事件探查器來監視應用會話消耗CPU資源和內存的狀況。
內存探查器可以幫助我們使用Leak Canary調試內存泄漏。
配置構建變化
你可以使用構建變化為你的應用創建不同的版本,還可以正確管理依賴項和簽名配置。
大多數組織都有測試和生產環境。如果想針對每種環境構建不同的應用程序,你可以利用不同的構建類型指定不同的基本URL。
你還可以根據API級別或其他設備變化,為不同的設備構建應用程序的不同版本。
4.使用 Lint Checks 改進代碼
這個 lint 工具可以幫助你找出結構不良的代碼,而這些代碼可能會影響應用程序的可靠性和效率。
Lint會告訴你布局中是否存在占用大量空間的命名空間。
它還告訴你其他結構性的問題,例如使用了棄用的元素或目標API版本不支持的API調用。它還會建議你使用所有庫的最新版本。
使用新的 SparseArray<String>(...) 代替 HashMap,可以獲得更好的性能。SparseArrays 會將整數映射到對象。與普通的對象數組不同,下標間可能存在間隙。
它比使用 HashMap 將整數映射成對象的效率更高。
測試應用程序
測試驅動的開發(TDD)是確保你會測試每一行新代碼的一種方法。如果采用這種方式,那么在編寫要實現的代碼之前,你需要為添加的內容編寫測試。
由于時間和資源有限,大多數創業公司可能不會采用測試驅動的開發環境。但是它已被許多公司廣泛接受。
Android 有三種類型的測試。
1.單元測試
單元測試用于測試方法和小模塊。無需模擬器或真實設備即可運行這些測試,因為它們可以在JVM上運行。
JUnit 和 Robolectric 是流行的 Android 單元測試框架,可以在JVM上快速運行測試。
2. 設備測試
設備測試依賴于Android 框架。由于這種依賴性,你需要模擬器或物理設備才能運行這種測試。我們使用 Mockito 模擬設備測試中使用的對象。
3. UI測試
我們可以利用UI測試活動的啟動是否正確,或視圖的存在是否正確。Espresso和UI Automater 是UI測試中廣泛使用的工具。
以下是應用當前所包含測試的軟件包結構。
Test:單元測試都保存在這個文件夾中。這些測試在JVM上運行,不需要 Android 設備或模擬器。
Android test:所有設備和UI測試都保存在這個文件夾中。這些測試需要 Android 物理設備或模擬器才能運行。
使用版本控制
Git 和 BitBucket 是最常用的版本控制系統。
版本控制可以跟蹤文件的改動,可以記錄完成的操作,并且可以根據需要恢復特定版本。
但給你與團隊一起工作時,版本控制有利于協作,而且還可以將所有的更改合并到源代碼中。如果沒有版本控制,則你需要進行備份,并將代碼存儲到安全的地方。
有了Git以后,代碼就安全了。你可以跟蹤更改,還可以針對某次發布維護多個代碼庫。它可以簡化兩個人一起工作時合并代碼的工作。
此外,你也可以利用Git展示你的工作,并向許多開源項目貢獻代碼。Git已成為許多公司篩選人才的地方,因為他們可以通過Git查看候選人的工作成果和個人項目。
發布產品的知識
無論你是否是將新版本發布到生產環境的主要負責人,我都建議你掌握將應用發布到應用商店的方法。
掌握使用密鑰存儲文件對APK進行簽名的方法。記下你的密鑰庫密碼和別名。你甚至可以在Gradle文件中配置它們,以簡化簽名過程。
使用 Crashlytics
Crashlytics 是最強大,最輕便的應用崩潰報告解決方案。
Crashlytics 提供了深刻且可付諸行動的見解,甚至包括應用崩潰時確切的代碼行號。你可以使用 crashlytics 來減少識別故障和修復故障的時間。
此外,它還提供了各種分析報告,例如出現頻率最高的崩潰,崩潰百分比等等。
Crashlytics 還包括 Crashlytics Beta,該服務可以讓你輕松地將預發行的 IOS 和 Android 應用分發給測試人員,以便快速獲得反饋。
原文:https://medium.com/better-programming/six-years-of-lessons-what-i-learned-as-an-android-developer-a825b55db7f0
本文為 CSDN 翻譯,轉載請注明來源出處。
【End】