argonの日記: オブジェクト指向っぽいこと 5
実はオブジェクト指向ってしっくりこないんです!
http://el.jibun.atmarkit.co.jp/minagawa/2010/04/post-ebc4.html
タイトルで釣られたらしくコメント欄で小火。
本文はもっともに見える断片もあるけれど文章としてこなれていないので、批判にすらなってないコメントがついたのもいたしかたない。
冒頭の、なんでもかんでもインスタンス作らなくてもいいよねっていう指摘はまあそのとおりなんだけど、言語触り始めてすぐ気づくようなことを書かれてもねえ。
OOPL に限らずともプログラミング言語の機能は、仕様を実現して保守しやすい状態に保つために使うものと考えると、どの機能を使うかとか使わないとかで結論を出すには、どのような仕様を実現するためなのかというのが前提になる。
著者の関与するこのような業務分野では OOPL で強調される機能はあまり有用ではなかった、という紹介ならいくらか参考になったかもしれない。
以前にも SQL が書ければ OO 不要というような記事を書いた方がいたが、いわゆる業務系アプリ屋とか SI の方は、自分の触っている分野ではという条件を暗黙の前提にして OO に否定的なコメントを出しているように思う。
オブジェクト指向の入門書では、クラスが持つ隠ぺい性が強調されているが、これは他の言語でもローカル変数であれば隠ぺいできる話。クラスでもパブリック宣言しちゃえば、隠蔽性なんてなくなる。それから、プロパティに隠ぺい性はない。逆に隠ぺいされていると困る。
これは残念な誤解をなさっているようだ。
プロパティ機構が隠蔽するのは実装の詳細である。
setter/getter を介することでメンバへのアクセス方法を抽象化できることがプロパティの本質なのに。
C# が Java より記述性で優れている点のひとつにプロパティ機構が言語に組み込まれていることがある。
Java では obj.setHoge(v); v = obj.getHoge(); という記述にならざるを得ないが、C# では obj.hoge = v; v = obj.hoge と public なメンバ変数へのアクセスと同様の記述が可能で、かつ hoge へのアクセスは如何様にも実装できる。
プロパティ(C# によるプログラミング入門)
http://ufcpp.net/study/csharp/oo_property.html
# Java7 でもプロパティ機構は導入されないらしい。
内容よりも (スコア:1)
こんな新人レベルがこの手の連載書いてる方が不思議なんだよなぁ...。
Re: (スコア:0)
でもそれはこの業界ではよくあることw
Re: (スコア:0)
士農工商、エタ、非人、プログラマ、ライター。
プロのプログラマが記事なんて書くわけ無いじゃないですか。
単価が死ぬほど安いんですよ?!
文字通りに飢え死にしそうなくらいに!
Re: (スコア:0)
Re: (スコア:0)
大丈夫かしら、あの作者・・・。
(これもあったので無駄にタレコミしちゃいました)