拡張for文? foreach文?
僕は仕事でソースコードレビューをする機会が多いんだけど
よく「Java5以降では拡張for文を利用すべき」という
指摘をすることがある。
ところが、国内外のエンジニア問わず
「拡張for文って何ですか?」って聞かれたり、
時には、聞かれないままIteratorで書き直されてくる場合もある。
(これは国外のエンジニアの話)
まぁ確かに「拡張for文」って言われても、
知らなければ直感的には分からないだろうなー、と思いながらも
一般的に使われている用語だからと思って、使うようにしていた。
、、、んだけど、最近、IterableインタフェースのJavadocを
たまたま見た時に、そのコメントを見て驚いた。
このインタフエースを実装すると、オブジェクトを「foreach」文の対象にすることができます。
インタフェース Iterable<T>
いや、インタフエースに驚いたんじゃなくて、
SunのJavadocには「foreach」文って書いてあるってこと。
英語のJavadocにも、やはり「foreach」文と書いてあるし
Javaプログラミング言語のサイトには「For-Each ループ」って書いてある。
確かにSunの英語サイトやJCPでは「Enhanced For-Loop」とか
「Enhanced For Statement」と表記されているけど、
少なくともSunの日本語サイトには、「拡張for文」という記述は見当たらなかった。
じゃぁそもそも拡張for文って言葉はドコから来たんだよって思って
語源を調べてみたんだけど、ヒット数が多すぎて、誰が言い出したかは分からず。
「拡張for文」でググった時に、一番上に来る人とかが怪しいけど(笑)
やはり実際のところは分からず。
そんなわけで、「foreach文」って書いた方が、
きっと分かりやすいし、Sunの日本語サイトでもそう言ってるし、
これからは、「foreach文」って言うことにしようと思った秋の夕暮れ。