Goの簡易文付きif文についての個人的な考察
Goでは、簡易文付きif文を使用することで、エラーハンドリングをより簡潔に書くことができる
しかし、個人的には早期リターンを用いた従来の書き方の方が可読性が高まると考える
書き方
ReadAlbumTitle関数からの戻り値(album構造体とerror)を処理する例
簡易文付きif文
if album, err := ReadAlbumTitle(file); err != nil {
return err
} else {
albumList = append(albumList, album)
}
従来の書き方(早期リターン)
album, err := ReadAlbumTitle(file)
if err != nil {
return err
}
albumList = append(albumList, album)
可読性
・簡易文付きif文ではコードの簡潔さやスコープの範囲が狭まるなどの利点はあるが、以下の理由から可読性は低くなる
- if文の直後に、条件判定ではなく後続の処理に関わる変数宣言が来ることで、文の構造が直感に反する
- else があることにより、思考が混濁しやすい(処理の流れが二手に分かるため、わかりにくい)
- err != nilの条件が行の右端に位置し、if文の本質的な条件が把握しにくい
選び方
コードに幾つかのパターンがある場合は、理由を明確にして選ぶのが良い
・言語の文化
・チームの技量
・コード量
・ゴードの寿命