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
}











5會員
186Content count
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
本課程學習如何實作處理加、減、乘和除按鈕等計算機相關邏輯。
本課程學習如何使用 Gson 解析資料。
本課程學習如何解析 JSON 資料。
本課程學習如何使用 使用 OkHttp 獲取網路資料方式。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
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
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
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