LoginSignup
0
0

More than 1 year has passed since last update.

プログラマーの為の識別子構成法 old/new 編

Last updated at Posted at 2022-12-24

最近新しいチームにジョインした。
レビューで変数名の giftOld と giftNew を beforeGift, afterGift のように直して欲しいと指摘を受けた。
私の回答は『英語的には違和感を感じるのですが、チームの慣例ならば従いますね。』だった。

私も英語が得意ではないのだけれど、英語力も技術力の一部で上を目指すべきものの一つだと考えている。

そこで以前の値と以後の値に関する識別子の構成法について考えてみたい。

beforeGift, afterGift の問題点

まず私が感じている beforeGift, afterGift の問題点だ。
私にはこう見える

Identifier 俺的日本語表現
beforeGift ギフトの前に、ギフトの前で
afterGift ギフトの後に、ギフトの後で

多分、チームの皆とは違う脳内表現に変換されていると思うが、恐らく自分の方が正確に英語を理解しているとは思う。

old/new ペアの場合

new が予約語の言語が多いので old/new のペアは使いたくないと否定されてしまったのだけど、もし old と new を使うとこんなイメージかなと思う。

Identifier 俺的日本語表現
giftOld ギフト(古)
giftNew ギフト(新)
oldGift 古いギフト
newGift 新しいギフト

英語は原則として 形容詞 -> 名詞 の順番の言語なのでナチュラルなのは oldGift, newGift だと思うが、 new がインスタンス生成の予約語になっている言語は多く、そうでない言語でも newGift は Gift のインスタンス生成メソッドにしている慣例があるのでこの形になるのは避けたい気がする。
そこで半分屁理屈ではあるが、日本語が漢字で書くと立派な言葉っぽく響くように英語もラテン語っぽくすると立派感がでるのか、名詞 -> 形容詞 の順も例外的には許容される感じがする事を理由に後置をお勧めしたい。

では before/after の後置は?

before/after を後置してみるのはどうだろうか?

Identifier 俺的日本語表現
giftBefore 〇〇前のギフト
giftAfter 〇〇後のギフト

意外といいかもしれない? before と after の後に、言うまでもない何かが略されている感じがする。
要するに gift before update とか gift after update みたいな表現の最後が省略されているように自分には思える。

チームのみんなと協議した際も『before と after は滅多に予約語になっているのを見た事がなくて識別子として使いやすい。』という話が出て、それについては自分も同意したのでこの形でいけたらいいかもしれない。

日本語脳に気をつける

これは識別子に使える対義表現を紹介する所で before/after を 前/後 のように紹介しているのもいけない気がする。
そう書かれると我々の日本語脳は自然と日本語に変換された後の表現で言葉を構成してしまうから。
正すとしたら前置詞 before/after が形容詞ではない事がわかりやすいように

English word 俺的日本語表現
before X Xの前に、Xの前で
after X Xの後に、Xの後で

こんな風に書くべきだと思う。

最後に

最初にも書いたけれど私も英語は別に得意じゃないししばしば間違えるのでここに書いてある事を鵜呑みにはしないで下さい。

確かに学生の頃に『to 不定詞は "こと", "べき", "ために" じゃ!!』って習った記憶があるのに、割と最近も toBlocking という間違った表現をエラーコードか何かに使いました。不定詞だから toBlock じゃなくちゃいけなかったよ (尚、先生の言い回しがなんか面白くて妙に記憶に定着してる件)。

それでは皆様 Enjoy programming!!

0
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
0
0