👻
GoとPythonの命名規則について改めて考える
はじめに
普段からGoとPythonを使っている上で命名規則に関して、時々どっちだっけ?となることがあったので、改めてまとめてみました。
Pythonの命名規則
Pythonでは、公式ガイドラインである PEP 8 に従うのが基本です。
PEP 8は、スネークケース(snake_case
)や簡潔で明確な名前を推奨しており、可読性を重視した設計が特徴です。
一般ルール
- スネークケースを基本とする。
- 意味が明確で簡潔な名前を使う。
- クラス名はキャメルケース(
PascalCase
)で記述する。
命名規則
種類 | 命名規則 | 例 |
---|---|---|
変数 | スネークケース |
user_name , total_sum
|
関数 | スネークケース |
get_user , calculate_total
|
クラス | キャメルケース(PascalCase) |
UserProfile , AuthService
|
モジュール | スネークケース(小文字) | auth_service.py |
パッケージ | スネークケース(小文字) |
auth , utils
|
定数 | 全て大文字+アンダースコア |
MAX_USERS , API_URL
|
非公開(private) | 先頭にアンダースコア | _internal_function |
特徴
-
プライベート命名: アンダースコア
_
を先頭につけて非公開であることを示す。 -
特殊用途の名前: 両端にダブルアンダースコアを使用(例:
__init__
,__str__
)。 - 柔軟な文字使用: Unicodeも許されるが、基本的には英語が推奨される。
Goの命名規則
Goでは、公式ガイドラインである Effective Go に従うのが標準です。
Goの命名規則はPythonに比べてシンプルで、公開性を先頭文字の大文字・小文字で区別する点が大きな特徴です。
一般ルール
- **キャメルケース(CamelCase)**を基本とする。
- 短く、意図が明確な名前を使用する。
- スコープ(公開/非公開)に応じて命名を変える。
命名規則
種類 | 命名規則 | 例 |
---|---|---|
変数 | キャメルケース(小文字から始める) |
userName , totalSum
|
関数 | キャメルケース(スコープに応じて小文字/大文字) |
getUser() , CalculateTotal()
|
構造体 | キャメルケース(PascalCase) |
UserProfile , AuthService
|
パッケージ | 全て小文字(短く) |
auth , utils
|
定数 | 全て大文字(アンダースコアは使わない) |
MaxUsers , ApiUrl
|
非公開(private) | 先頭を小文字 | internalFunction |
公開(public) | 先頭を大文字 | PublicFunction |
特徴
-
スコープによる公開性の制御:
- 小文字始まり: パッケージ内で非公開。
- 大文字始まり: パッケージ外で公開。
-
パッケージ名:
- 小文字のみで短くする(例:
auth
,net
)。 - インポート時に読みやすい名前を意識。
- 小文字のみで短くする(例:
-
シンプルさ:
- 無駄に長い名前は避ける(例:
user
vsuserInformation
)。
- 無駄に長い名前は避ける(例:
PythonとGoの命名規則の比較
特徴 | Python | Go |
---|---|---|
命名スタイル | スネークケース(snake_case) | キャメルケース(CamelCase) |
公開性の制御 | プライベートに_ を使用 |
小文字(非公開)、大文字(公開) |
定数の命名 | 全て大文字+アンダースコア | 全て大文字(アンダースコアなし) |
ファイル/パッケージ名 | スネークケース(小文字) | 小文字(短く簡潔) |
公式ガイドライン | PEP 8 | Effective Go |
まとめ
GoとPythonの命名規則には多くの違いがありますが、共通して大切なのは以下の点です:
- 意味を明確にすること: 名前がその目的を正確に表現しているか。
- 簡潔さ: 不必要に長い名前は避ける。
- 一貫性: チーム全体でルールを統一すること。
プロジェクト全体での統一感を保ちながら、各言語の特徴に合わせて適切に命名規則を適用していきたいですね。
この記事が、GoとPythonを使う際の参考になれば幸いです!
Discussion