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
10會員
243內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
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
主要物件: BiometricManager -檢查使用者是否有指紋辨識or是否設置密碼 BiometricPrompt -初始化指紋視窗 並且 呼叫指紋視窗 BiometricPromptInfo -指紋視窗的一些設定 Title , Description ... Coding: 結果:
 轉移自 LogDown 原文日期 January 19, 2016 14:35  Android 上常有些沒有在文件上,卻應該清楚的資訊,筆者稱其為 Android 的潛規則。 下面條列出筆者遇過的部分,會隨著踩過的坑繼續更新。   鬧鈴會因為開關機被清除,所以必須重新設定。 Androi
 轉移自 LogDown 原文日期 September 09, 2015 22:18  View animation (API1) 針對 View 的鏡花水月、海市蜃樓,物件本身沒變化,比如說:點擊和觸摸仍針對原處。   Tween animation 給我一個開始和結束
Thumbnail
轉移自 LogDown 原文日期  July 30, 2014 19:36  Gogo Monkey Run Kevin, Gogolook monkey runner     - auto-testing tool     - python monkey recorder     - co
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
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
主要物件: BiometricManager -檢查使用者是否有指紋辨識or是否設置密碼 BiometricPrompt -初始化指紋視窗 並且 呼叫指紋視窗 BiometricPromptInfo -指紋視窗的一些設定 Title , Description ... Coding: 結果:
 轉移自 LogDown 原文日期 January 19, 2016 14:35  Android 上常有些沒有在文件上,卻應該清楚的資訊,筆者稱其為 Android 的潛規則。 下面條列出筆者遇過的部分,會隨著踩過的坑繼續更新。   鬧鈴會因為開關機被清除,所以必須重新設定。 Androi
 轉移自 LogDown 原文日期 September 09, 2015 22:18  View animation (API1) 針對 View 的鏡花水月、海市蜃樓,物件本身沒變化,比如說:點擊和觸摸仍針對原處。   Tween animation 給我一個開始和結束
Thumbnail
轉移自 LogDown 原文日期  July 30, 2014 19:36  Gogo Monkey Run Kevin, Gogolook monkey runner     - auto-testing tool     - python monkey recorder     - co