[英語] 関数名・変数名の付け方
自分が実践している方法を書いていきます。
まず基本形があって、それに沿って表現したい事によって言葉を選んでいくという感じです。ちなみに語彙はすごく大事なので実際に英語ネイティブのエンジニアが使う単語を Github や Twitter で日頃からアンテナを張っておくと役立ちます。
関数名基本形
動詞_名詞_条件/状態や程度
動詞にはget, fetch, create, delete等が、名詞にはリソースの名前が来ることが多いと思います。条件には可能ならとか、状態や程度には再帰的にとか回数等が入ります。
例
- get_comments_if_needed
- delete_nodes_recursively
- emit_event_once
ここで動詞を三単現にすべきかという疑問が湧いてくることがありますが、僕は動詞の原形にするようにしています。Railsのmodelで関連を定義するメソッドは三単現で書かれているのですが、その割にsavesとかupdatesみたいなのは無いので一律原形で揃えておくとややこしくならないかなと思います。
引数と組み合わせてより説明的にするパターンもあります。処理を行う対象とその前のメソッド名がつながるようになります。RailsやObjective-C/Swiftによくある印象です。
例
- find_all_products_for(current_user)
- redirect_to(destination)
- authorize_user_with(scope)
変数名基本形
形容詞_名詞
関数名に比べてシンプルですが奥が深いので侮れません。基本的にはリソースを名詞に落とし込んで数えられる状態にするというのがコツかなと思います。
形容詞には色々あって通常の形容詞の他に動詞由来、名詞由来等があります。
例
- popular_product / popular_products
- hot_word / hot_words
- primary_country / primary_countries
数えられない系の名詞の場合はsetやlistを繋げると複数感を表現できます。
例
- data / dataset
- advice / advice_list
- information / information_list
動詞由来の形容詞
実は動詞は過去分詞にすることで形容詞として使えるようになります。例えば有料とか削除されているみたいなやつです。過去形によく似ていますが、その状態になっているという意味なので、処理の順番を意識する必要はありません。
例
- paid_item / paid_items
- deleted_user / deleted_users
- hit_article / hit_articles
ここで paid / hit を使っていますが、それぞれの変化は原形・過去形・過去分詞系の順に
pay / paid / paid
hit / hit / hit
となるからです。このように単純に末尾に -ed をつければいいだけじゃない動詞もあるので three forms of hit などでググると間違いがないです。
名詞由来の形容詞
動詞に比べると簡単ですが実は落とし穴があります。基本的には〇〇の何かを表すために使えるかと思います。
例
- phone_number / phone_numbers
- street_address / steet_addresses
- three_day_history / three_day_histories
ここで three day が登場しました。3日もあるのに day が単数形のままです。これはなぜかというと英語では名詞だけが数えられる品詞だからです。
つまり元々名詞だが、形容詞として使った時点でそれは形容詞なので数えられなくなるのです。だから3日だろうと形容している場合は単数形でなければいけません。
いかがでしたか!!!!11
またこのようなテーマで別の角度の話も書いていこうかと思います。