Goの命名規則ではレシーバの文字数は1文字か2文字で十分であると書かれています。
For a method receiver, one or two letters is sufficient.
https://github.com/golang/go/wiki/CodeReviewComments#variable-names
わたしもあまりGoのソースコードを読んだことがあるわけではありませんが、1文字しかありませんでした。しかし以下のようなコードのとき
go
1type App struct { 2 Connection: DbConnection 3 Conf: SomeConf 4} 5 6func (app *App) GetWebApiHandler(c framework.Context) error { 7 ... 8} 9 10func InitRouter(app *App) *framework.Router { 11 router := framework.New() 12 13 router.GET("/api/foo", app.GetWebApiHandler) 14 15 return router 16}
のようにapp
で統一するのが自然なのかなと思うのですがどうでしょうか。
考えすぎのようなもしますが、よろしくお願いします。
Goに明るくないんで回答は避けますが、どちらかというとレシーバーは意味的に他言語の「this」や「self」に近いものであり、「app」等の名前をつけると引数と混同してしまうからやらないんじゃないですか?
だからといって「this」や「self」みたいな命名をすれば良いのか、というと、それがダメな理由はなんかググったら色々と。
(必ずしもそのオブジェクト自身を指さないケースが存在するとかなんとか)
https://stackoverflow.com/questions/23482068/in-go-is-naming-the-receiver-variable-self-misleading-or-good-practice
なかなか奥の深い問題だなと調べながらに思いました。どの言語でも命名には問題がつきまとうものですね
回答1件
あなたの回答
tips
プレビュー