🙅

その変数名だけはやめろ:頼むから analysis を anal と略さないでください

2024/11/06に公開

下ネタ系

使用者の意図 変数名 脳内解釈 読み方
temporary, temperature tmp timpo チンポ
cumulative cum cum カム(英: 精子)
count, client cnt cunt カント(英: 女性器)
assign, assembly ass ass アス(英: ケツ)
client clit clit クリトリス(英: 陰核)
analyze, analysis anal anal アナル(英: 肛門)
unknown unk unko ウンコ

Linux には /tmp という一時ファイル用のディレクトリがあるので tmp は許容範囲ではある。cnt は英語圏でも普通に使われる変数名のようで、assanal ほどの忌避感はないようである。

最悪な変数名は anal_checkanal_insert である。

叩いた回数の累積などを cumshot(「射精」のスラング)にするのも割と最悪みがあるようだが、日本人にはあまり伝わらないという意味でそこまででもない。

以下、改善案。

変数名 改善案 理由
tmp temp だいぶチンポみが薄れる
cum cumul 精子臭さは取れた
cnt c, t, count どうせ略すならこうしろ/いまどき数文字くらい略すな
ass asn, asm, assign, assembly 同上
clit client いまどき数文字くらい略すな
anal analyze, analysis 同上
unk unknown 同上

https://www.quora.com/As-a-software-developer-what-is-the-most-inappropriate-variable-name-youve-ever-seen

そこまで気にしなくていいと思う単語

使用者の意図 変数名 意味
sexuality sex 性別

英語圏では普通に性別を指す言葉なので、データベースの性別カラムの名前が sex になっていても別に構わないと思う。あえて gender などとすると意味合いが変わってしまう。

ただし、変数 sex の周りでバグが起きると職場や客先で「セックス」と連呼することになる。

確率の低い下ネタ

いままで遭遇したことがないが、ごく低い確率で生じるかもしれない下ネタ。4文字程度のタグを自動生成する際に確率的に発生してしまうこともあるらしい。

以下の表で、[x] は先頭が x で始まる単語を指す。

変数名 脳内解釈 意味 発生状況
sperm sperm 精子 [s] + permutation / [s] + permission
tit tit 乳首 [t] + iterator
boob boob おっぱい byte + [o] + object
porn porn ポルノ "positive or negative"
bich, bitch bitch ビッチ bit + check / bit + change

乳首とおっぱいはシモじゃねぇ、上だろというご意見は慎んで受け流します。

案外ダメな下ネタ

変数名 意味
xxx ドエロいコンテンツ

X に「キス」や「X-指定(ポルノコンテンツのレーティング)」の意味があり、それを3つ重ねた XXXドエロいコンテンツを指すようになった[1]

ダミーの IP アドレスとして XXX.XXX.XXX.XXX と書く人がいるが、これもいけない。トップレベルドメイン .xxx は正式に認可されたドメインで、ポルノサイトを区別するために使われていたりする。実際に https://XXX.XXX にアクセスすると以下のようなポルノサイトのハブサイトに繋がる。(職場でクリックしちゃダメ!!)


すべてのポルノサイトをすぐに見つけられます!

例示やテストに用いるダミーの IP アドレスは、RFC 5737 において Documentation Address Blocks として以下の3つのアドレスブロックが割り当てられているので、こちらを使うこと。

名称 アドレスブロック
TEST-NET-1 192.0.2.0/24
TEST-NET-2 198.51.100.0/24
TEST-NET-3 203.0.113.0/24

https://datatracker.ietf.org/doc/html/rfc5737

Fワード系

fuckfaggot。その他、shit のような単に汚い言葉を集めると無限にあるので紹介はしない。

黒歴史系

日本人が思ってるより英語圏ではセンシティブなワードたち。

変数名 意味 発生状況
nazi ナチス 自動生成の4文字タグ
kkk クー・クラックス・クラン ループ変数など
commie コミー(共産主義者の侮蔑用語) "commit" の typo
nigger 黒人の差別用語 万が一にも発生してはダメ[2]
slave 奴隷 ノードの役割
master[3] 奴隷の主人 ノードの役割、ブランチ名、原本
genocide 虐殺 コンテナやプロセスをすべてキルする

nigger には派生系が多く、Nワードと呼ばれているので注意する。

宗教系

変数名 意味 発生状況
voodoo ブードゥー 日本語の「黒魔術」を翻訳するとき

ブードゥー教は実際に存在する宗教で、アメリカ人のステレオタイプにより実際の宗教とは関係のない「黒魔術」としての意味で用いられる。日本語のプログラミングにおける「黒魔術」の意味合いで "voodoo" という単語が用いられることがあり、ブードゥー教に対して大変失礼なので使ってはならない。

その他

上記の錚々たるメンツと比べれば、その他は圧倒的にどうとでもしてくれていい。

文字が紛らわしい系

パッと見よく分からない文字や省略は比較的嫌われる。以下の文字で1文字変数を作ると簡単に同僚から嫌われることができる。

  • o, O, 0
  • l, I, 1

最悪の使用例は以下。

意図 変数名
first 1st
last lst

lstlist の省略形としても書きがち[4]

SmallIllustration などもかなり最悪みがある。

https://www.reddit.com/r/programming/comments/sg2w5/the_worlds_two_worst_variable_names/

名前が紛らわしい系

圧倒的に頻出かつ紛らわしいのはぶっちぎりで id である。id という変数名は識別情報(ID: identification)とインデックス(index)に使われることがあり、これらはループの中で同時に出現することもある。

個人的には id は識別情報(ID: identification)にのみ用いるべきだと思う。なぜならば本来 I.D. と略すところを ID と書くほうが自然になるほど定着した identification の省略形だからである。

index に対しては i, idx, index などを状況に応じて使えばよいと思う。

ちなみに index の複数形は indicesindexes両方のケースがあるindex_list とでもしておけばケンカにはならない。

頼んだぞ。

別にいいんじゃないのと思う変数名

x, y, z, i, j, k などの1文字変数。言語ごとの文化に依存する話ではあると思いつつも、一般論として。

処理対象のデータ型が具体的に決まっていない汎用的な関数であるならば、その引数や引数の処理結果に対して xy のような抽象的な変数名をつけることには問題がないと思う。その複数形である xsys についても普通に便利だと思う。100行も200行もある関数でやられると困るが、3行の汎用関数であれば別に気にしない。

ループ変数の i, j, k なども、下手に長くして要素指定が異常に見にくくなるよりは 100% マシである。私は地獄のような数値演算を自前で書いたときにそう思った。

行列を X, Y、ベクトルを v で表すなど、数学的な文脈でも他に名付けようがない場合があるので許されるべきだと思う。

推奨される命名

10,000 Like 超えの圧倒的鉄板記事があるのだから、それを見ればよいんじゃないかな。

https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923

おしまい

本記事の対象読者は小学生である。

脚注
  1. 旧 Twitter の名称が「X」に変更になったのは、ググラビリティ以上にこの観点からだいぶ最悪寄りの最悪であると言える。 ↩︎

  2. 国名ニジェール(Niger)は紙一重である。 ↩︎

  3. 原義や現在の意味を考えても、これを黒歴史化するのはさすがに言葉狩りだろうと個人的には思う。 ↩︎

  4. Python では list が予約語なので lst にせざるを得ない部分もある。私は若干 Haskell 文化から影響を受けているので、そこまで無情報なリストであれば xs を使う。 ↩︎

Discussion