Re: C#のプロパティは書くのが楽になるわけではない
なんというか荒れてますが、私は大筋でkwatchさんに賛成ですね。Javaのプログラムには確かに「本質的でない冗長な記述」がありますし、大規模だからと言ってそれが有利に働くわけでもありません。アクセサは書くのも面倒ですしソースの可読性も下げます。現実のコードでは、javadocコメントが入るからさらにひどくなります。
http://gazoo.com/G-BLOG/mae04blog/64856/Article.aspx
応援ありがとうございます。やはり複数の言語を身につけている人は、冷静に判断してくださいます。
ではC#のプロパティはどうかというと、ver.3.0の自動プロパティ以前の世界では、
public int X { get { return x; } set { x = value; } }…と書かなければいけないという時点で、Javaでアクセサ書くのに比べ、別に簡潔にはなっていないです。
http://gazoo.com/G-BLOG/mae04blog/64856/Article.aspx
このクラスを使う側で、o.getX()と書く代わりにo.xと書けるという点では簡潔ですが。
なるほど。これをみるだけなら、たしかに Java のアクセッサと比べて特段に優れているとは言えないですね。
自分でも調べてました。『ver.3.0の自動プロパティ』だと
public string Name { get; set; }
と書けてだいぶ簡潔になっているようです。
(参考: C#によるプログラミング入門 : プロパティ)
Java SE 7のプロパティはいいですね。
http://gazoo.com/G-BLOG/mae04blog/64856/Article.aspx
http://journal.mycom.co.jp/articles/2007/05/16/java7/
同意します。この記事を読む限り、仕様はよくできてると思います。Java5 の時点で登場すべき機能でした。どう考えても Typesafe enum より重要でしょ。これを「イラネ」というJava屋 (もちろん部分集合) の頭が理解できません。
さて、以降は蛇足ですが、わざわざご意見をいただいたので、蛇足にも回答させていただきます。
さて、以後は蛇足ですが。
http://gazoo.com/G-BLOG/mae04blog/64856/Article.aspx
FileReaderの件についてのt_yanoさんの記事の主題は、タイトルのとおり「Javaの冗長な記法って小クラス主義の現れではないかな」ということなのであって、FileReaderみたいなファイルを読むのに特化したクラスを作るより、汎用的な小さなクラスを組み合わせるのが「Javaのポリシー」である、ということでしょう。だから標準出力に特化したprintも、そんなに使いやすくしようとしていない。不便だと思うなら、ラッパを外部に書けばよかろう、と。
これに対して、ユーザを不幸にするポリシーなんて意味がないとか、反論は考えられますけど、このエントリー↓で、
http://d.hatena.ne.jp/kwatch/20080506/1210048902
そのt_yanoさんの肝心の主題に関する言及がまったくない、というのはなぜなんでしょうか。私はこの点ではt_yanoさんに同意なので、kwatchさんの意見も聞いてみたいのですが。
すでにt_yanoさんのほうにコメントしてますが、便利クラスや便利メソッドを用意して、primitiveなクラスやメソッドはやめろといっているわけではないです。primitiveなクラスやメソッドを提供することと、そのwrapperやfacadeを用意することは排他的ではないので。
少なくともFileReaderという便利クラスが標準で用意されているわけですから、その意図を考えれば、より便利な仕様を求めることは別におかしなことではないはず。そしてそれはprimitiveなクラスやメソッドを使えなくすることとはまったく関係ありません。
あと最初のエントリにも書いているんですど、Javaが初心者にも優しいというなら、たかがテキストファイルを読み込むだけであんなに煩雑なコードを書かなきゃいけないのはおかしくて、この仕様を正しいと思うなら「初心者に優しいJava」なんていうのはウソっぱちです。こんなの、初心者に Java を教えたことのない人 (あるいは教えたつもりになっているだけの人) の思い込みにすぎない。
#これで回答になってますか?