# 北五第四週小組任務 :::info 報到 - [x] 橘子 - [x] Cosmos - [x] H.L.C - [x] hsin yu - [x] 棠棠 - [ ] hsu0921 - [ ] Marvin - [ ] Nathan James - [ ] Ryann - [ ] 壯壯 ::: ## 第一題 請討論第四關主線任務 BMI kata #### 1.觀看老師的範例影片跟程式碼,討論是否有其優化之處? 1. 現在身體質量指數(BMI)的分界值(18.5、24、27、30、35)是硬編碼的。建議將這些數值定義為常數,以提高代碼的可讀性。 ``` const UNDERWEIGHT_BMI = 18.5; const NORMAL_BMI = 24; const OVERWEIGHT_BMI = 27; const MILD_OBESITY_BMI = 30; const MODERATE_OBESITY_BMI = 35; ``` 2. 使用物件儲存 BMI 狀態:現在BMI 狀態是在 bmiStatesData 物件中以硬編碼的方式定義的。建議使用常數或物件鍵來存儲這些狀態,這樣將來更容易進行修改或擴展。 ``` const BMI_STATES = { OVER_THIN: { state: "過輕", color: "藍色", }, NORMAL: { state: "正常", color: "紅色", }, OVERWEIGHT: { state: "過重", color: "澄色", }, MILD_FAT: { state: "輕度肥胖", color: "黃色", }, MODERATE_FAT: { state: "中度肥胖", color: "黑色", }, SEVERE_FAT: { state: "重度肥胖", color: "綠色", }, }; ``` 3. 使用一個更通用的 calculateBMI 函數:現在計算 BMI 的代碼是在 printBmi 函數中,我們可以將它提取成一個單獨的函數,以便在需要時進行重複使用。 ``` function calculateBMI(height, weight) { return (weight / ((height / 100) * (height / 100))).toFixed(2); } ``` 4. 使用一個單一函數來處理 BMI 狀態和數據添加:將 bmiStatesText 和 addData 函數結合成一個單一函數,以減少代碼重複性。 ``` function processBMI(height, weight) { const bmi = calculateBMI(height, weight); let state; if (bmi < UNDERWEIGHT_BMI) { state = BMI_STATES.OVER_THIN; } else if (bmi < NORMAL_BMI) { state = BMI_STATES.NORMAL; } else if (bmi < OVERWEIGHT_BMI) { state = BMI_STATES.OVERWEIGHT; } else if (bmi < MILD_OBESITY_BMI) { state = BMI_STATES.MILD_FAT; } else if (bmi < MODERATE_OBESITY_BMI) { state = BMI_STATES.MODERATE_FAT; } else { state = BMI_STATES.SEVERE_FAT; } console.log(`您的體重${state.state},健康指數為${state.color}`); addData(bmi, state); } ``` 5. 使用模板字面量簡化字串拼接:使用模板字面量來簡化字串拼接,使代碼更易讀。 ``` console.log(`您總共計算 ${totalNum} 次 BMI 紀錄,最後一次 BMI 指數為 ${bmiHistoryData[lastNum].bmi},體重${bmiHistoryData[lastNum].state.state}!健康指數為${bmiHistoryData[lastNum].state.color}!`); ``` hsin yu:https://codepen.io/tina2793778/pen/YzBqpJq Cosmos:https://codepen.io/violet7755/pen/wvNMyaJ ## 第二題 Git 挑戰 ### [Git Repo 連結](https://github.com/dogwantfly/git-practice-week2) A組員: ![1101git.png](https://hackmd.io/_uploads/rkdrxgema.png) B組員: ![2023-11-01_10.52.42.png](https://hackmd.io/_uploads/H1qFlexX6.png) ### 討論畫面: ![螢幕擷取畫面 2023-11-01 220812.png](https://hackmd.io/_uploads/r1_gbxxXT.png) ![截圖 2023-11-01 下午11.39.37.png](https://hackmd.io/_uploads/Sy7ubegX6.png)