Java における本質的でない記述がどのように大規模開発に役立つのか

まじめな話に切り替えて、Java屋さんJava信者さんに質問したいと思います。


質問: Java における、本質的でない冗長な記述は、どのように大規模開発に役立つのでしょうか。


質問の背景を説明すると、以前の晒されエントリで、Java における本質的でない記述の数々について話題にしました。それに対する反応で、『Java は大規模開発向けだから記述が長くてもいいんだ (または長くなくてはいけない)』という意見が多くあります。

たとえば、ブックマークコメントより:

エンタプライズ分野であの大伽藍が求められたのだから仕方ないですよ。

エンタープライズ分野のような大規模開発こそ、必要な情報を簡潔にわかりやすく記述する必要があると思ってたんですが、世の中は違うようです。

同じくブックマークコメントより:

Java屋の怠慢は高層ビル建築をどうサボるかであって、犬小屋を作る時にどうサボるかという視点とは違うのだが…。

自分としては、犬小屋ごときでサボれないのに高層ビル建築でサボれるわけないじゃんと思いますが、それはさておき、大規模! 大規模! という意見が多いので、本質的でない冗長な記述がいかに大規模開発に役立つのか、自分としても Java屋さんJava信者さんの意見をちゃんと聞いたうえで結論を出すべきなのかなと考えました。

そこで、日ごろ Java を使っている方に具体的な質問をしたいと思います。よろしければ下の質問にお答えいただけないでしょうか。

  • たとえばアクセッサが簡潔に定義できないことは、大規模開発にどう役に立ってますか? もしアクセッサが簡潔に定義できるようになったら、大規模開発に支障がありますか? C# ではアクセッサが簡潔に定義できるそうですが、その分 C# は大規模開発には不利になりますか? 次期 Java ではプロパティが導入されるそうですが、これは大規模開発にとってマイナス材料になりますか?

(追記: C#屋さんで、C#の簡潔なアクセッサ定義がどう便利 (または不便) なのか、語っていただける方はいませんか。特に大規模開発と絡めて語っていただけると大変参考になります。)

  • たとえば FileReader に文字コードを渡せないことは、大規模開発にどのような貢献をしてますか? FileInputStream や InputStreamReader や BufferedReader を組み合わせたコードは、FileReader ひとつだけで済むコードより長く複雑になりますが、それは大規模開発にどう役立ってますか? もし仮に FileReader だけで済むようになった場合、大規模開発にまずい点がありますか?
  • たとえば Javaシンタックスシュガーが追加され記述が簡単になったとして、それは大規模開発にとって不利になりますか? JDK 1.5 から拡張for文*1、static import、typesafe enum など様々なシンタックスシュガーが導入され、ある種の記述が簡素化されましたが、これは大規模開発にとって悪影響を与えましたか?


#あまりたくさん質問しても回答されない恐れがあるので、数はこのくらいにしておきます。


なお静的な型を省けというような話ではないことに注意してください。このコメントこちらのエントリにも書いたように、静的な型は Java にとって本質的に重要な情報であり、これは省くべきではありません。まあ Java の型指定はめんどくさいので C# のように var を導入してもいいとは思いますが、今回はそのことについてはスルーします。また『そんなにJavaがいやならXXX使っとけ』という類いの、ろくに回答ができないがゆえの負け惜しみは、それを入力する分だけあなたの貴重な時間のムダになりますので、ご遠慮くださるようお願いします。

今回の話は最初のエントリから『本質的でない記述』に焦点を当てています。本質的に必要であると思われる記述については、たとえ長いものでも対象としていません (クラス名とかメソッド名とか)。そのことをふまえた上で、『本質的でない記述が大規模開発にどう役立つのか』を回答していただけると幸いです。

Java で大規模開発しているみなさん、よろしくお願いします。
#残念ながら、回答いただいても謝礼はありません。すみません。

*1:拡張for文では新しいinerfaceも導入されているため単なるシンタックスシュガーではないということもできますが、実質的にはシンタックスシュガーであるため、ここではそう見なしています。