コーディング時の命名規則
突然ですが、皆さんはソースコードを書く時、変数や関数名をどのように決めていますか?
私は会社での書き方が身に染みてしまっているため、C言語系で書く時にはハンガリアン記法を使うことが多いです。
だけど、javascriptとかpythonって直接型宣言とかしないのでどうしようかな?と考えておりました。。。
後、英語が苦手だからか命名するの苦手なんですよね。。。泣
いつも同じような関数名を使ってしまったり、変数名はいつも~~bufといった命名にしてしまったり、、、
ちょっといい方法ないのかな?と思い調べてみましたのでまとめたいと思います!!
■ハンガリアン記法
接頭辞に型名を付ける記法のこと。
接頭辞に型名が付いているためにまちがえたコードの場合に見えるようになる、変数の型が変数名からすぐに判断できる、
がメリットになるかな?と思います。
書き方としては例えば、
bool型の場合には
bool bFlg や bool b_Flg
int型の場合には、
int iCount や int i_Count
などになります。
またポインタの場合には、型名と合わせて使います。
例えば、
int型のポインタであれば、
int ipBuf や int i_pBuf
とかで書きます。
それぞれの型に合わせた接頭辞の付け方はこちらに載っておりました!!
※参考:ハンガリアン記法 - Wikipedia
■キャメル記法・パスカル記法
文字ラインが凹凸になっているところからラクダのこぶになぞらえて命名された記法のようです。
・単語ごとに1単語目から大文字にする場合:パスカル記法
・2単語目から大文字にする場合をキャメル記法
と呼ぶようです。
例えば、
・パスカル記法の場合:UserPram
・キャメル記法の場合:userParam
と命名するようです。
接頭辞を付ける必要がなく後で記載するスネーク型と異なり区切り文字がないので短い文字数で変数を定義できることがメリットになります。
■スネーク記法
単語と単語の区切りにアンダースコア(アンダーバー)を使う記法です。
例えば、
user_param
といった記法になります。
区切りがあるため単語が認識できるため、ぱっと見で分かりやすくなる。
■その他記法
記法として命名されていませんが、
・関数名は「動詞+目的語」で書きましょう
・処理内容によって接頭辞を特定の単語にする
とかの規則を作り、分かりやすくする手法もあるようです。
後は、暗黙の了解みたいな部分ありますが、
定数は大文字で記載する、とかでしょうか?
■言語毎の命名規則
言語によっては命名規則が決められているものがあるようでした!!
[python]
PEP8でこちらのように定められているようです。
※参考:https://qiita.com/naomi7325/items/4eb1d2a40277361e898b
[javascript]
「Google JavaScript Style Guide」というjavascript命名規則があり、そこに従ったほうが良いようです。
「Google JavaScript Style Guide」は下記にまとめられております。
https://google.github.io/styleguide/jsguide.html#naming
■変数・関数命名 便利サイト
私のように、変数・関数名つけるの苦手だよ~~
という場合、こちらのサイトを利用してみてはいかがでしょうか?
[codic]
日本語を入力すると変数名や関数が出力されるので、日本語が思いついている場合にはすぐに変数名・関数名を決めることができます。
チートレベルですねww
アカウント登録・ログインせずにすぐに使用可能ですが、
ログインすると辞書登録やカスタマイズが行えるようになるようです。
料金プランもFreeから有料まであります。
codic - プログラマーのためのネーミング辞書
使って見るとこんな感じです。
[よく利用される動詞リスト]
コーディング時に利用する動詞ってそこまで多くないのでよく利用される単語やニュアンス、使い分けについて知りたい場合にはこちらを確認するとよさそうです。
関数名によく使われる英単語(動詞)の意味とニュアンス | PHP Archive
コーディングの命名規則一覧 | murashun.jp
■まとめ
調べてみて恥ずかしくなったのは、javascript、pythonには公式(レベル)で命名規則が決まっていることを知らなかったことです。。。
決まった規則を守っていないコードを展開していた。。。
今後は守りながら記載していきたいと思います!!
後、「codic」は今回調べて初めて知ったサイトだったのですが、困ったときに使えそうと思いました!!
visual studio codeやvisual studio 2019にプラグインできるようなので、あとで試してみたいと思います。