魔法少女☆しゅがぁ♡しんたっくす(⋈◍>◡<◍)

0x14歳の女子中学生です( ˙꒳˙ ) TikTokとインスタにハマってます(⋈◍>◡<◍)。✧♡

変数名や関数名には正しい名前をつけましょう

こんにちは。不穏です( ˙꒳˙ ) 

この挨拶もいずれ第一正規系に置き換えたくなる日が訪れそうです( ˙꒳˙ ) 

 

ツイッターやってたら、変数名とかの話題になったので、

なんかちょうどよさそうだし、変数名やクラス名とか語ります( ˙꒳˙ ) 

 

https://twitter.com/huon_chan/status/1282261447108554752

 

変数や関数、クラスに名前を付けるというのは、親が子供に「名前」を付けるの同じで、

正しい名前を付ければ、そいつはあなたのプログラミングを助けますが、

ふざけたり不適切な名前を付けられた変数や関数は、その復讐の時を、虎視眈々と待ち続けています( ˙꒳˙ ) 

しかも不都合な事に、その報復を受けるのは、「実装した奴」じゃないことが大半です( ˙꒳˙ ) < 担当者出てこいゴラァ!!!便所の果てまで仕様聴く為に追い掛け回すぞ!!

 

 

 

先に「変数名が適切じゃないと、何が問題なの?」って事に関しては、

かなり極端なバッドケースを掲載します( ˙꒳˙ ) 

 

● 解読不能

http://unkode-mania.net/view/5016619653eb124626000000

f:id:huon_chan:20200713193007p:plain

● 日本語混在

http://unkode-mania.net/view/5029e1a9eef2c7f861000008

コメント欄は意外と擁護意見あるが、

俺が全角/半角キーの押し過ぎで腱鞘炎になったら

この方針で進めた奴に慰謝料請求する。

( ˙꒳˙ ) そんなに日本語が好きなら「なでしこ」でも使ってろ

 

● 極端に長いor極端に短い

http://unkode-mania.net/view/5017c16b88f62a4864000000

JavaDocでやれ(正論)

 

●番外編:プログラマなら「常識」じゃなく「標準」に従え

http://unkode-mania.net/view/50a1018a61fd523468000000

f:id:huon_chan:20200713193204j:plain

 

■ 変数の命名の種類

 

●キャメル記法

int TwitterKusoRipuNum = 37564;

みたいに、単語の区切り事に大文字を使う記法の事で、

だいたいの言語は、この記法が使われる事が多い。

 

名前の語源は、見た目がラクダのコブのように見える事から( ˙꒳˙ ) 

 

ちなみに、上記記法を「アッパーキャメル」

先頭だけ小文字にする「twitterKusoRipuNum」みたいな命名

「ローワーキャメル」と呼ばれてます。

 

●スネーク記法

i_licke_python ='Hollow World!!'

のように、単語の区切りを「アンダーバー」で区切る記法の事。

名前の語源は、見た目通り、「蛇」のようにアンダーバーで長くつながる事から。

変数名が長くなるので、キャメル記法のほうがよさそうですが、あまり気づかれない長所として

「変数名を英語の文法のように自然に記載できる」というメリットがあります( ˙꒳˙ ) 

英語の文書のスペースが、アンダーバーに置き換わった感じです。

余談ですが、ふおんはこっちの書き方のほうが好きです( ˙꒳˙ ) 

 

ハンガリアン記法

string strName ="不穏";

int iAge = 14 ;

 

みたいに、変数の先頭に、小文字で変数の型を記述する記法

昔は流行ってましたが、以下の理由で廃れました。

 

・最新の、よほど貧弱なIDEじゃない限り、IDEが補完して変数にマウスオーバーすれば型を表示してくれる

・int型の変数をlong型に変更した際に、ルールに従うのなら、使用箇所全てを書き換える必要がある

 

変数の型を先頭に書く人はもう流石に絶滅危惧種ですが、

クラスのメンバ変数の先頭にmNameみたいに「メンバ変数」である事を示す記号を付ける記法は、今だ生きていたりします。

 

また、JavaScriptPythonみたいな、動的型付け言語では、この記法をあえて採用することで

その変数に「どんなデータが入ってるのがふさわしいのか」という情報を変数そのものに持たせる事が可能なので、時々使う事はあります( ˙꒳˙ ) 静的型付け言語では採用メリットないですね

 

■自分がよく使う寧名規則

・言葉にできない奴

obj

・配列の要素の場所を表す数値

index,idx,i

・一時的なデータ置き場

tmp

・何等かのデータを取得する

Get

・なんらかのデータを与える

Set

・クラス等を使うための初期設定を行う

Initialize、Init

・処理1行程度の純粋な比較をbool型で取得する

Is

・与えられたデータの妥当性を調べる

Check

・条件に当てはまるデータを取得する

Find

・内部データを特定のルールに基づき整理する

Sort

・定期的に呼ばれる関数、または特定タイミングで呼ばれる

Update

・失敗する可能性がある程度想定されてる関数

Try

・状態が有効かどうか

Enable

・可視状態に関係するもの

Visible

・あるオブジェクトに渡して、特定タイミングで実行してもらう関数

Subscribe

・他のモジュールに何らかのタイミングを通知する

Notify

・何等かのまとまった処理を実行する

Execute

・データのうちの一部を消去する

Delete

・内部データを纏めて消去する

Clear

・ある処理のクラスそのものを不可逆的に削除する

Destroy

・予期せぬタイミング等で、特定処理を一時的に中断する

Abort

・予期せぬタイミング等で、特定処理を不可逆的に削除する

Kill

・ログを出力する

Logging

・ある処理やライブラリを、より使いやすくするために手続きを簡略化したもの

Helper

・関数名すら考えたくないほど思考放棄

Hoge