iwatake2222
@iwatake2222 (iwatake)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

名前(変数名やモジュール名)を倒置することの是非について、ご意見募集

質問内容

変数名やモジュール名を付ける際、基本的には自然な英語(名詞)になるようにすると思います。
が、個人的な癖なのですが、カテゴリや種別があるものはそっちを先頭に持ってきた方が分かりやすいし、検索やソートした際も見やすいと思っています。(恐らくこう感じるのは非英語圏の人間だからかもしれませんが。)

下記に例を挙げますが、「(B)倒置した名前」とすることに関して、皆様のご意見を教えていただけないでしょうか。
よろしければコメント欄で教えていただけると嬉しいです。以下解答例。

  • 自分もそうする
  • コーディングルールで規定はされていないが、自分はやらない。なんとなく
  • コーディングルールで規定はされていないが、自分はやらない。気持ち悪い
  • コーディングルールで規定はされていないが、自分はやらない。許せない
  • コーディングルールで禁止している(英文法に沿った書き方になるよう規定している、など)
  • その他

(A)英語通り自然な名前

  • student_list
  • teacher_list
  • player_name
  • enemy_name
  • hit_number
  • miss_number
  • sensor_driver
  • battery_driver
  • telephone_number_form
  • address_form
  • main_window
  • sub_window

(B)倒置した名前

  • list_student
  • list_teacher
  • name_player
  • name_enemy
  • number_hit
  • number_miss
  • driver_sensor
  • driver_battery
  • form_telephone_number
  • form_address
  • window_main
  • window_sub

コーディングルールとしてハンガリアン記法を採用すべきかどうか? という話ではなく、単に「英語としておかしくなるけど、単語の順番を入れ替えるのは有りか無しか」という点に関してご意見を伺いたいです。

1

コーディングルールに規定されていない時は、なるべく英語的に自然になるように心がけています。
→日本語圏以外の人が読んだときのために(意識せずに和製英語になっている可能性ありますが、、、)

ただ、コーディング規約に規定されている場合や、神経を使うシステム(安全性とかお金に関わるとか)はアプリケーションハンガリアン的に接頭に持ってくること命名規則の採用を検討します。

1Like

回答 個人的にはありだとおもいますが、ルールがある場合はルールに従います。

自分は個人作業がメインなので結構自由に名前つけていますよ。

  • start_time

  • end_time
    この順番だと僕は変数名に使います。

  • time_start

  • time_end
    こちらの順番だと僕は関数名に使います。
    timeからtimerに変えますが。

あまり意識していないのでなんでだろうかな?と考えたんですが、
上の並びは名詞として捉え、
下の並びは動詞として捉えているのかも?

名詞は何かの名称だからそのまま変数名に使い、
動詞は「動かすもの=関数」と連想して関数名に使っている…

まぁ、自分が分かりやすいように付けるのが一番ですよ。
バグが出た時に直すのは自分なのでっ!

自分で直さない場合は、
「周りの人が分かるように付ける」ってことで良いんじゃないでしょうか。

以下蛇足です。

日本語に訳してそのままつなげると、
start_time=>開始時刻
time_start=>時刻開始

上は「開き始めた時を刻む」、始めた時間を記録
下は「時の刻みを開き始める」、時間の計測を開始
こんな風に脳内変換してるのかもです。

1Like

@Kazuhito さん
ご意見ありがとうございます。
GitHubで共有したりすることを考えると、確かに自然な英語に見える方が良いですよね。
ただ完全に主観ですが、仮に日本語だったとしても、日本語として不自然でも以下のような変数名の方が分かりやすいと思ってしまうんですよね。特に同種のものが並ぶ場合。
(だいぶ「_」に助けられてる感はありますが。。。)

プレイヤーの名前名前_プレイヤー
名前入力欄入力欄_名前

0Like

@amiya-seさん
ご意見ありがとうございます。
変数名は名詞、関数名は動詞とするのはまさにその通りですね。
質問の意図としては名詞_名詞の場合にどうするか、でした。なのでstart_time, end_timeの例は動詞ともとれるので紛らわしかったかもしれません。

「周りの人が分かるように付ける」ってことで良いんじゃないでしょうか。

同意です。
お仕事や他の人とやるプロジェクトではコーディングルールに従いますが、個人開発用にルールを決めたいなと思いまして。

そして、↑で「名詞_名詞」と書いてて思ったのですが、大抵の場合「○○の△△」となるケースが多いので、英語であっても「○○'s △△」か「△△ of ○○」の違いに過ぎない、と考えれば本当にどちらでもいい話だと自己解決してきました

0Like

日本語と英語の考え方の違いを考慮する必要があるかもしれません。

例えば、名詞を修飾語で補い方について

  • 日本語では、名詞の前に広い方から狭い方へ補うよう付与
  • 英語では名詞の後ろに狭い方から広い方へ付与

具体的には、
日本語では、「〇〇市の△△公園の広場にXX時ちょうどに□□する」に対して、
英語では、「□□ at XX o'clock to △△ park in 〇〇 city」
な感じ

student_listlist_studentとしてしまうのは日本人的感覚なのかもしれないですね。

1Like

I think it's very important to make a EASY and SHORT name.
And make sure your co-worker understand what are you talking.(Don't get smart.)
ex:
player_id
(Player's ID)
player_pos
(Player's position)

If the name is in two or three word in your name, use the big letter.
ex:
packageHandler

But I think the most important is talk with your team member, there is no 'i' in [team].

1Like

コーディングルールで規定はされていないが、場合により。

  • フォルダが使える場合は接尾辞が同じ物を束ねれば好いので、寧ろ「ファイルを識別する要素」が先頭にあった方が合理的やと考えてまする。恐らく其れは、英語ネイティブの人達も同じ考えであろうと思っております。

  • Android 開発で登場する 、リソースを格納する res フォルダ内ではフォルダのネストが許されてなかったので、カテゴリを前にするのが習慣になってました。(しばらく Android 開発してないので、現在では進化してるかもです)

0Like

Your answer might help someone💌