メソッドやファイル名の命名について
某pomeさんに質問した際の回答を復習のためにまとめまする。
例えばuserというドメイン名があり、そのファイル名やパッケージ名、構造体名、またはクラス名について一生悩んでいました。
ディレクトリ名、パッケージ名、メソッド名の命名のモチベーション(?)を聞きました。
例えば
user/
getById.go
なのか
user/
userGetById.go
のように、ファイル名にuserをつけるか否かでいうと、結論はつけなくて良いです。
なぜなら、ディレクトリ名でuserは伝わっているからです。
goでは、パッケージ名と構造体名でメソッド名が変わります。詳しく説明する前に、
プログラミング言語は、ディレクトリ、パッケージ、モジュール、クラス、メソッドという概念があり、
一番大きい概念がモジュールやパッケージ
次にクラスとか構造体、
次にメソッドという感じで
それらをつなげて自然に繋がるように命名する。
なので、例えば
package handler
type handler struct {}
func (h *Handler) GetUserById() {}
というように、構造体の名前がhandlerだと、何取得するかわからないので、メソッド名にuserをつける。
package handler
type User struct {
}
func (h *Handler) GetByID() {
}
というように、構造体名がuserだと、すでにuserは構造体名でつたわってるので、メソッド名には入れない。
というように、go言語では、パッケージ名と構造体名の組み合わせでメソッド名を決めると良いらしいです。
まぁメソッド名とかファイル名も2秒くらいで変更できるのでそこまで悩まず困った時にリネーム機能などで変更すればおkです。
悩むべきは、jsonやカラム名など、リリースした後変更しにくい名前は熟考した方が良いです。
また、UIから開発者が使う単語、コードが一貫してることが望ましいです。
例えば、UIに「●●カテゴリー」と表記される予定があるのであれば、jsonやメソッド名など開発者が使う単語もそれに統一するなどエンドユーザーがわかりやすいかどうかに合わせるのが基本。
Discussion