👻

GoとPythonの命名規則について改めて考える

2025/01/24に公開

はじめに

普段からGoとPythonを使っている上で命名規則に関して、時々どっちだっけ?となることがあったので、改めてまとめてみました。

Pythonの命名規則

Pythonでは、公式ガイドラインである PEP 8 に従うのが基本です。
PEP 8は、スネークケース(snake_case)や簡潔で明確な名前を推奨しており、可読性を重視した設計が特徴です。

一般ルール

  1. スネークケースを基本とする。
  2. 意味が明確で簡潔な名前を使う。
  3. クラス名はキャメルケース(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に比べてシンプルで、公開性を先頭文字の大文字・小文字で区別する点が大きな特徴です。

一般ルール

  1. **キャメルケース(CamelCase)**を基本とする。
  2. 短く、意図が明確な名前を使用する。
  3. スコープ(公開/非公開)に応じて命名を変える。

命名規則

種類 命名規則
変数 キャメルケース(小文字から始める) userName, totalSum
関数 キャメルケース(スコープに応じて小文字/大文字) getUser(), CalculateTotal()
構造体 キャメルケース(PascalCase) UserProfile, AuthService
パッケージ 全て小文字(短く) auth, utils
定数 全て大文字(アンダースコアは使わない) MaxUsers, ApiUrl
非公開(private) 先頭を小文字 internalFunction
公開(public) 先頭を大文字 PublicFunction

特徴

  • スコープによる公開性の制御:
    • 小文字始まり: パッケージ内で非公開
    • 大文字始まり: パッケージ外で公開
  • パッケージ名:
    • 小文字のみで短くする(例: auth, net)。
    • インポート時に読みやすい名前を意識。
  • シンプルさ:
    • 無駄に長い名前は避ける(例: user vs userInformation)。

PythonとGoの命名規則の比較

特徴 Python Go
命名スタイル スネークケース(snake_case) キャメルケース(CamelCase)
公開性の制御 プライベートに_を使用 小文字(非公開)、大文字(公開)
定数の命名 全て大文字+アンダースコア 全て大文字(アンダースコアなし)
ファイル/パッケージ名 スネークケース(小文字) 小文字(短く簡潔)
公式ガイドライン PEP 8 Effective Go

まとめ

GoとPythonの命名規則には多くの違いがありますが、共通して大切なのは以下の点です:

  1. 意味を明確にすること: 名前がその目的を正確に表現しているか。
  2. 簡潔さ: 不必要に長い名前は避ける。
  3. 一貫性: チーム全体でルールを統一すること。

プロジェクト全体での統一感を保ちながら、各言語の特徴に合わせて適切に命名規則を適用していきたいですね。
この記事が、GoとPythonを使う際の参考になれば幸いです!

BIDIRE

Discussion