Android x Kotlin 實作課程:打造個人專屬計算機 APP EP7 程式碼優化重構程式碼

更新於 發佈於 閱讀時間約 7 分鐘

打造個人專屬計算機 APP 系列文章目錄:
https://vocus.cc/article/65acea9ffd897800019c13dc

課程摘要

本課程學習如何透過函數重構程式碼,提高可讀性、可維護性和重用性。以按鈕操作為例,將不同邏輯提取成函數,例如 allClear()、equalSign() 等,使程式碼更簡潔易懂,提升開發效率。

教學影片

若您無法順利觀看教學影片,請先登入您的 YouTube 帳號,然後點擊以下連結加入我們的頻道會員:

  • 一般會員:成為一般會員後,您將能夠觀看我們所提供的一般會員專屬線上課程。
  • 精實會員:成為精實會員後,您將能夠觀看我們所提供的精實會員專屬線上課程。

範例程式碼

when

when (buttonText) {
"AC" -> allClear()
"=" -> equalSign()
"+/-" ->toggleSign()
"⌫" -> backspace()
"." -> dotSign(buttonText)
else -> {
handleNumberOrOperator(buttonText)
}
}

handleNumberOrOperator

private fun handleNumberOrOperator(buttonText: String) {
if (buttonText in listOf("+", "-", "*", "/")) {
if (!isFirstInput && !processText.endsWith(" ")) {
processText += " $buttonText "
processTextView.text = processText
isFirstInput = true
}
} else {
processText += buttonText
processTextView.text = processText
isFirstInput = false
}
}

dotSign

   private fun dotSign(buttonText: String) {
if (!processText.endsWith(".") &&
!processText.contains(" .") &&
!processText.endsWith(
" "
)
) {
processText += if (isFirstInput || processText.last()
.isWhitespace()
) "0" else ""
processText += buttonText
processTextView.text = processText
isFirstInput = false
}
}

backspace

 private fun backspace() {
if (processText.isNotEmpty()) {
processText = processText.dropLast(1)
processTextView.text = processText
}
}

toggleSign

 private fun toggleSign() {
if (processText.isNotEmpty() &&
processText.toDoubleOrNull() != null &&
processText.toDouble() != 0.0
) {
processText = if (processText.startsWith("-")) {
processText.drop(1)
} else {
"-$processText"
}
processTextView.text = processText
}
}

equalSign

 private fun equalSign() {
if (!isFirstInput) {
val result = evaluate(processText)
resultTextView.text = if (result.contains(".0")) {
result.dropLast(2)
} else {
result
}
isCalculated = true
}
}

allClear

private fun allClear() {
processText = ""
processTextView.text = ""
resultTextView.text = ""
isFirstInput = true
isCalculated = false
}











avatar-img
13會員
259內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
本篇文章介紹 Android 開發中的依賴注入(Dependency Injection,DI)概念,強調其在現代開發中的重要性。依賴注入能解決類別之間的緊密耦合問題,提升程式碼的可重用性、測試便利性及重構的容易性。文章中舉例說明了未使用依賴注入的缺陷,並展示了使用依賴注入的改良方案。
Thumbnail
本文提供全面的 Android Hilt 依賴注入框架完整教學目錄,涵蓋基礎概念、注入方式、進階功能及測試實務。透過這些內容,開發者能夠深入理解並有效學習並運用 Android Hilt 進行依賴注入 Dependency Injection。
Android應用程式內更新功能提供兩種模式:強制更新與彈性更新,滿足不同應用場景需求。強制更新要求用戶更新完成才能繼續使用;彈性更新則允許用戶在背景更新同時繼續使用應用程式。兩種模式皆具優缺點,開發者應考量應用需求選擇合適模式。
Thumbnail
承接上一篇換系統原因文,來實際講講我從Pixel換成iPhone 15 pro的遇到的困境,也是我建議要跳槽到iOS的人最好先注意的事情。 轉換期是可以預見的,網路上所有的評測幾乎都會這樣告訴你。 不過即使先有這樣的認知,我使用iPhone中的第一個月,還是適應得非常辛苦。 想用原生服務? 幾乎
Thumbnail
因為手機相機壞掉,這次iPhone 15 pro預購第一天就跟著上去開搶,9/22發售當天就拿到了iPhone。我過去是使用Android,使用至今約2個月,中間經過適應期,也有帶出國。以下分享我換機的原因與感想給有類似需求者,因為打太長了,上集就先分享換機理由好了...。 Android使用經驗
Thumbnail
Android版本的ChatGPT,它的語音系統讓我感覺到非常的驚艷,使我忍不住想要搶先來發表一下我的測試報告。 Android版本的ChatGPT在 8月1號正式在台灣上線,我現在已經在使用,不過很可惜的是,它對於一些在網頁版能夠使用的實驗性功能,並沒有辦法在Android app上使用。至少目
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
本篇文章介紹 Android 開發中的依賴注入(Dependency Injection,DI)概念,強調其在現代開發中的重要性。依賴注入能解決類別之間的緊密耦合問題,提升程式碼的可重用性、測試便利性及重構的容易性。文章中舉例說明了未使用依賴注入的缺陷,並展示了使用依賴注入的改良方案。
Thumbnail
本文提供全面的 Android Hilt 依賴注入框架完整教學目錄,涵蓋基礎概念、注入方式、進階功能及測試實務。透過這些內容,開發者能夠深入理解並有效學習並運用 Android Hilt 進行依賴注入 Dependency Injection。
Android應用程式內更新功能提供兩種模式:強制更新與彈性更新,滿足不同應用場景需求。強制更新要求用戶更新完成才能繼續使用;彈性更新則允許用戶在背景更新同時繼續使用應用程式。兩種模式皆具優缺點,開發者應考量應用需求選擇合適模式。
Thumbnail
承接上一篇換系統原因文,來實際講講我從Pixel換成iPhone 15 pro的遇到的困境,也是我建議要跳槽到iOS的人最好先注意的事情。 轉換期是可以預見的,網路上所有的評測幾乎都會這樣告訴你。 不過即使先有這樣的認知,我使用iPhone中的第一個月,還是適應得非常辛苦。 想用原生服務? 幾乎
Thumbnail
因為手機相機壞掉,這次iPhone 15 pro預購第一天就跟著上去開搶,9/22發售當天就拿到了iPhone。我過去是使用Android,使用至今約2個月,中間經過適應期,也有帶出國。以下分享我換機的原因與感想給有類似需求者,因為打太長了,上集就先分享換機理由好了...。 Android使用經驗
Thumbnail
Android版本的ChatGPT,它的語音系統讓我感覺到非常的驚艷,使我忍不住想要搶先來發表一下我的測試報告。 Android版本的ChatGPT在 8月1號正式在台灣上線,我現在已經在使用,不過很可惜的是,它對於一些在網頁版能夠使用的實驗性功能,並沒有辦法在Android app上使用。至少目