# 北五第四週小組任務
:::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組員:

B組員:

### 討論畫面:

