1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ひとりアドベントカレンダー 初めてのチャレンジ編Advent Calendar 2024

Day 13

命名規則がごっちゃになるので調べ直してみる

Last updated at Posted at 2024-12-12

お疲れさまです、みやもとです。

今年はちょくちょくLINEBOTを作ったりしていたのですが、記事を書くたびに間違えては直ししていたことがありました。
変数やメソッドの命名です。

なんとなくで覚えて混同

みやもとは普段仕事でJavaを使っています。
LINEBOTをいじるときはPythonを使います。

この状態のせいなのか、LINEBOTを動かすために書いたコードのメソッド名とか変数名がうっかりJavaっぽくなる。

イメージ
'''
Pythonのメソッドってキャメルケースだっけ?
'''
def generateAiMessage(message: str, response_mime_type: str, system_prompt: Optional[str]) -> str:
    # Gemini AIモデルを生成
    genai.configure(api_key=gemini_api_key)
    # チャットの応答を生成
    model = genai.GenerativeModel(
        "gemini-1.5-flash",
        system_instruction=system_prompt,
    )
    
    # チャットの応答を生成
    response = model.generate_content(
        message,
        generation_config={"response_mime_type": response_mime_type})
    return response.text

中途半端に覚えているせいなのか、全部が同じ方式で統一されているならまだしもメソッド名はJavaっぽい、変数名はPythonっぽいみたいにごっちゃになることも多い。

アドベントカレンダーのネタに困ってきたこともあり、ざっくりでも自分で調べてみることにしました。

今回はがんばってオフィシャルのドキュメントにあたってみていますが、かなりかいつまんで解釈しているので不正確なところもあると思います。
あまりにもあかん解釈があればそっとご指摘いただけると幸いです。

Pythonのスタイルガイド:PEP8

Pythonの勉強を始めた際、コーディング標準があるのを見た記憶があります。
おぼろげな記憶ではありましたがどうにかPEP8にたどり着きました。さっそく命名に関するあたりの記述を見てみましょう。

実際に命名に関して定義されているのは「Prescriptive: Naming Conventions」あたりからですかね。

  • 小文字のl(エル)、大文字のO(オー)、大文字のI(アイ)を1文字で変数に使うのは紛らわしいからやめよう
  • パッケージの名前は小文字を使おう
  • クラス名はCapWards式(単語の頭文字のみ大文字)にすること
  • 例外もクラスにするのでクラスと同じルール
  • メソッド名と変数名は小文字、単語区切りはアンダースコア
  • 定数は全部大文字、単語区切りはアンダースコア

ほかにもこまごまありましたが、現時点で私がコードを書く上で必要なのは上記かなと思ったので割愛します。

Javaのスタイルガイド

じゃあ次はJavaだ。
スタイルガイドを探したところ、大きく出てきたのは2つありました。
ひとつはGoogleのGoogle Java Style Guide。

もうひとつはOracleのCode Conventions for the Java TM Programming Language。

どちらも広く使われているようなので、両方見比べながらいこうと思います。
前者は5 Naming、後者は9 - Naming Conventionsを見てざくっとまとめました。

  • パッケージ名は小文字とピリオド
  • クラスは名詞で、単語の始まりのみ大文字
  • メソッドは動詞、単語区切りは最初の文字を大文字にして区別
  • 定数は名詞で大文字、単語区切りはアンダースコア
  • パラメータ含む変数は名詞で小文字、単語区切りは最初の文字を大文字にして区別

比較と雑なまとめ

ざっと調べたところで表にしてみました。
命名規則はこちらを参考に書いてます。

対象 Python Java
パッケージ ドットケース1 ドットケース
クラス パスカルケース パスカルケース
例外 パスカルケース パスカルケース2
メソッド スネークケース キャメルケース
定数 アッパースネークケース アッパースネークケース
変数 スネークケース キャメルケース

並べてみた感じ、とりあえずは変数とメソッド名だけ気を付ければ良さそうですかね。
今後間違えないように気を付けたいと思います。

  1. Pythonのパッケージ名は小文字と書かれていましたが、インポート時の記載を見るとこっちかなと。

  2. Javaは例外に関して書かれていませんでしたがPythonに合わせて分けました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?