質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

0回答

413閲覧

関心の分離と計算量のトレードオフ

oiraRiku

総合スコア0

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2022/06/17 06:47

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は計算量に特化していると仮定した場合。
どちらを優先すべきなのでしょうか?

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2022/06/17 06:58

BMIの平均 とは BMIの総和/サンプル数 ですよね? であるなら、GetAvarageBMI1() は計算式そのものが間違っています。
shiketa

2022/06/17 07:01

平均の平均は平均ではない。GetAvarageBMI1とGetAvarageBMI2の結果がそもそも異なっているのではありませんか。
oiraRiku

2022/06/17 07:04

確かに間違ってますね... 一応例なので、訂正はしませんが、どちらも同じ内容を計算しているという前提でお願いします!
episteme

2022/06/17 08:51

> 同じ内容を計算しているという前提でお願いします! だったら「より単純な方」を採用します(僕なら)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問