在兒科劑量計算中,有一個非常重要的臨床安全鐵則:「無論兒童的體重多重、年齡多大,經由公式推算出的兒童建議劑量,絕對不能超過成人的標準劑量!」
例如:若一位青少年(體重 75 kg)使用克拉克公式(成人劑量×75/68(kg))計算,算出來的數字會達到成人劑量的 $1.1$ 倍。如果程式沒有做好天花板上限控制,就可能產生給藥過量(Overdose)的風險!
今天 [Day 17],我們將在現有的輸入驗證基礎上,加入劑量安全天花板控制,並展示如何將這套邏輯重構成乾淨且易維護的模組化程式碼!
為了解決極端值與超量問題,我們在程式中加入以下安全防護:
age < 1 / weight < 1),立刻攔截並提示,避免誤算。resultDose > adultDose,自動將 resultDose 強制修正為 adultDose 上限。
以下是完全對齊你現有程式碼邏輯,並加入安全上限後的精簡實作:
/tool2-dosage.js
當我們的程式碼運行無誤後,可以進一步將計算邏輯抽取出來,達成「職責分離(Separation of Concerns)」:
// 模組化公式函式
function getYoungsDose(adultDose, age){
return adultDose * (age / (age + 12));
}
function getClarksDose(adultDose, weight){
return adultDose * (weight / 68);
}
// 模組化天花板限制函式
function capDosage(calculatedDose, maxDose){
if (calculatedDose > maxDose) {
return { finalDose: maxDose, isCapped: true };
}
return { finalDose: calculatedDose, isCapped: false };
}
透過將算式拆解為純函式 (Pure Functions),不僅點擊事件內的程式碼會變得極度簡潔,未來如果要寫單元測試 (Unit Test) 驗證公式時也會非常輕鬆。
今天我們在現有的簡潔程式碼基礎上,成功為 [Tool 2] 構建了劑量天花板安全防護機制,並探討了程式碼模組化的重構方向。
在明天的 [Day 18] 中,我們將進行 [Tool 2 總結與成果驗證],回顧這 5 天來從 HTML Grid 佈局、change 選單切換到公式驗證的完整歷程,為第二個核心工具畫下完美的句點。