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

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

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

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

Q&A

解決済

1回答

1445閲覧

Go言語のレシーバ名の文字数に3文字は適切か

A_kirisaki

総合スコア2853

Go

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

0グッド

0クリップ

投稿2020/04/14 04:36

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で統一するのが自然なのかなと思うのですがどうでしょうか。
考えすぎのようなもしますが、よろしくお願いします。

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

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

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

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

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

gentaro

2020/04/14 06:05

Goに明るくないんで回答は避けますが、どちらかというとレシーバーは意味的に他言語の「this」や「self」に近いものであり、「app」等の名前をつけると引数と混同してしまうからやらないんじゃないですか? だからといって「this」や「self」みたいな命名をすれば良いのか、というと、それがダメな理由はなんかググったら色々と。 (必ずしもそのオブジェクト自身を指さないケースが存在するとかなんとか) https://stackoverflow.com/questions/23482068/in-go-is-naming-the-receiver-variable-self-misleading-or-good-practice
A_kirisaki

2020/04/14 06:37

なかなか奥の深い問題だなと調べながらに思いました。どの言語でも命名には問題がつきまとうものですね
guest

回答1

0

ベストアンサー

Goはレシーバ名に1,2文字を取ることが慣例的です。他にも以下のような資料で言及されています。

https://talks.golang.org/2014/names.slide#11

もちろんNGということではないですが、Goの一般的な慣例には当てはまらない、と言えるでしょう。

投稿2020/04/14 05:05

d_tutuz

総合スコア730

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

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

A_kirisaki

2020/04/14 06:34

OSSにでもするのでない限りそこまで気に払う必要はなさそうですね(3文字だし)。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問