谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

拡張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文」って言うことにしようと思った秋の夕暮れ。