Goのメソッド設計

April 20, 2014 - golang

vitessのmemcacheクライアント実装を見てて思ったこと。

golangのメソッドは値とエラーを返す。 つまり、呼び出す側としては、エラーを受け取るメソッドを呼び出すごとにエラー制御が必要になる。 これを1つのメソッドの中で複数エラー制御してると可読性が下がる。 なので、エラー制御が必要になるごとにメソッドに切り出す。

たぶんこんなふうに分割してくんだと思いました。

func main() {
	conn, err := net.Dial("tcp", "localhost:11211")
}

を使うなら

func NewConn() (conn net.Conn, err error) {
	conn, err := net.Dial("tcp", "localhost:11211")
	if err != nil {
		return nil, err
	}
	return conn, nil
}

func main() {
	conn, err := NewConn()
	if err != nil {
		panic(err)
	}
	//
}

と言った感じ。