🔰
日本人を悩ます複数形問題
exist と exists
- 英語圏では exists がやたら使われる
-
exists(user)
のようなコードを見かけるたびに user は単数形なのにと疑問が沸く - 一方 Ruby の
Pathname#exist?
では単数形なので自然な感じはする - そういや
File.exists?
は非推奨になり最近では単数形のFile.exist?
だけになったらしい - 翻訳すると exist は存在で exists は存在するらしい
- 複数形の s じゃない??? (ますます混乱)
start_with と starts_with
- Python → startswith[1]
- Rust → starts_with
- ググるとだいたい starts_with 系
- Ruby → start_with?
- ActiveSupport → すでに start_with? があるにもかかわらず starts_with? にエイリアス
- もともと ActiveSupport が先だとはいえ
- start って動詞なのに複数形にしていいの?
- 複数形問題とは関係ないけど論理型を返すならプレフィクス
is_
をつけてほしい。starts_with だけじゃわからん
end_with と ends_with
同上
result と results
- articles や items と書いてあって配列でなかったことはないが results の場合配列かどうか怪しい
- 主観として多めというだけで results の型は予想がつかない
- いや、多めですらない場合もある。ただの小さな文字列だったりする
- 自分でこの単語を使いそうになったときはどっちが適切なのか永遠と悩んで先に進めなくなるので使わないことにしている
state と status
だいたい同上
equal と equals
- 例えば assert_equals と assert_equal の何が違うのか
-
assert_equals(1, 1)
のどこに複数形の要素があるのか
util と utils
- 英語圏ではなんでもかんでも複数形にしたがるはずがこれは逆
- node.js の組み込みメソッドがブラウザ上でも使える util パッケージは単数形になっている
- 一方 Ruby の FileUtils は複数形になっている
- 英語圏では utility が money と同様に、複数なのはあたりまえなので常に単数形とする説を仮定し、ググってみたがそのような言及は見つからなかったので結局基準はわからないまま
strip と trim
- もう複数形問題と関係なくなっちゃってるけど Ruby の strip に相当する機能が英語圏ではかたくなに trim になっている
- Ruby のメソッド軍を参考にしているように見えなくもない他言語のライブラリでも strip は trim になっていた
- でも Python は strip っていう
- Ruby の strip は Python からとった?
-
単語と単語を繋げるんじゃない(小声) ↩︎
Discussion
existsとかstartsのsは三単現のsですね
真偽値を返す場合必ずisを前につけるというのは英語的には自然じゃない場面が多いです。
1.is_number()
は英文にすると”1 is a number?”で意味が通ります。同じように
exists
やstarts
、他にはhas
といったプレフィックスも英文に直してみると自然になるようになっています。また、sをつけるのは冗長に思われるかもしれませんが、もしsをつけない形で統一するなら、
is_number
はbe_number
にするべきです。utilityは手元の辞書で調べると複数形になるのが普通のようです。私の勘ですがはutilsはutilitiesの略であり、utilはutility moduleの略だと思ってます。
stripとtrimについても辞書を引いてみると全然違う単語ということがわかりました。
stripは何かから衣服や皮などを剥がすニュアンスが強く、
trimは何かについて余分なところを切り取るという意味合いが強いです。
文字列における余分なもの(空白など)を皮のように連想したのがstripだと言えるかもしれません。trimは特に連想なくそのままの意味です。
三単現……? (急いでぐぐる)
動詞の s は複数形と関係なかったんですね
もやもやが少し晴れました
他にも有用な情報ありがとうございます