BMIの平均 とは BMIの総和/サンプル数 ですよね?
であるなら、GetAvarageBMI1() は計算式そのものが間違っています。
go
1package main 2 3import ( 4 "fmt" 5) 6 7type person struct { 8 weight float32 9 height float32 10} 11 12func GetAvarageBMI1(persons []*person) float32 { 13 aveWeight := GetAvarageWeight(persons) 14 aveHeight := GetAvarageHeight(persons) 15 return aveWeight / (aveHeight * aveHeight) 16} 17 18func GetAvarageBMI2(persons []*person) float32 { 19 var total float32 20 var count float32 21 for _, p := range persons { 22 total += p.weight / (p.height * p.height) 23 count++ 24 } 25 return total / count 26} 27 28func GetAvarageWeight(persons []*person) float32 { 29 var total float32 30 var count float32 31 for _, p := range persons { 32 total += p.weight 33 count++ 34 } 35 36 return total / count 37} 38 39func GetAvarageHeight(persons []*person) float32 { 40 var total float32 41 var count float32 42 for _, p := range persons { 43 total += p.height 44 count++ 45 } 46 47 return total / count 48} 49 50func main() { 51 persons := []*person{ 52 &person{60, 1.7}, 53 &person{60, 1.7}, 54 &person{70, 1.8}, 55 &person{70, 1.6}, 56 } 57 58 fmt.Printf("平均BMI1:%v\n", GetAvarageBMI1(persons)) 59 fmt.Printf("平均BMI2:%v\n", GetAvarageBMI2(persons)) 60}
例として、このようなコードがあり、
GetAvarageBMI1が関心の分離、GetAvarageBMI2は計算量に特化していると仮定した場合。
どちらを優先すべきなのでしょうか?
あなたの回答
tips
プレビュー