- PR -

.NET開発者のためのリファクタリング入門について

投稿者投稿内容
コモンセンス
会議室デビュー日: 2005/01/05
投稿数: 15
投稿日時: 2005-01-06 17:13
コモンセンスです。

objectさんレスポンスありがとうございます。

objectさんの書き込み (2005-01-06 12:59) より:

>オブジェクト指向 = プログラミングの世界
>と考えられてる訳ですね?

いいえ、「(オブジェクト指向)プログラミングの世界」
と書いたように、オブジェクト指向 = プログラミングの世界
と考えているわけではありません。
しかし、いまのオブジェクト指向はプログラミングの世界から
離陸できていないとは思っています。

>この「振舞」に相当するものが、「プログラミングの世界」以外には存在しない…

振舞ならもうすこし一般的になりますね。
それならメソドなどと言わずに、より一般性のある別の言葉を
当てればよいではないかと思います。(そういうところに離陸度の
不徹底を感じます)

>(1)を以って、
>出てこない(必要でない)概念
>とは考えていないでしょうか?

抽象化はきわめて重要なことですから、
抽象化されていることは(私にとっては)
美点でありこそすれ欠点とみなすことは
ありません。

>「メソッド」= 「写像(数学での)」

これは抽象化しすぎてはいないでしょうか?
XX = 写像 と言ってしまえば、XXのところには
なにでも当てはまってしまいます。
プロパティも写像ではないですか
メソドとはどういう写像かまでを言わないといけない
のではないでしょうか?
そもそも(オブジェクト指向をはじめとする)
モデリングというものは、「適切な」抽象化が
本旨であり、「徹底的な」抽象化は数学の仕事では
ないでしょうか?
# もちろんいつでもカテゴリ論のようなレベルに
形式化できる用意があるということはよい試金石
であるとは思いますが。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-01-07 12:44
objectです。

>guionさん
このレスは、私の「菊池さん」と「コモンセンスさん」へのレスは見て頂いた上でのものでしょうか?
私は、見て頂いていないと判断しましたが、全ての方に同じ内容の説明をするだけの時間がありません。
従って、他の方へのレスも読んで頂けないでしょうか?

>まあそれはいいんですが、
>その本質な概念と、
>ここで話題になってる言語仕様(C#とか)の内輪用語としての「プロパティ」や「メソッド」とが
>どういう関係にあるのか?ってのが、まず問題かと。
「内輪用語」という事で何を仰りたいのかが理解出来ませんが、
私は、
「プロパティ」と「メソッド」とがどういう関係にあるのか?
を重要視しているからこそ「情報・振舞」をあげて説明している訳です。
それに対して
>まあそれはいいんですが
という表現は、少し矛盾していますよね?

>言語仕様の中で使われてる用語は、
>外界の定義(もし有るならば)との互換性が取れてる保証が無いのでは?
ここでも「互換性が取れてる保証」という表現で、何を仰りたいのでしょうか?
「用語の概念」が全く無関係だと仰っている訳でしょうか?
それに、
誰かが保証して、保証書を発行すれば満足出来る
という主旨の話をされたい訳でしょうか?
#それでは、「数学概念」が有効性を発揮するためには、その全てに何処かで「保証」が必要な訳ですね?

>で、おのおのの言語仕様を合算して「なんとなく(厳密ではないので)」得られる、
>「プロパティ」「メソッド」と呼べそうなもの、について、
>上記の話(区別は文法上の些事でしかない)が言えてるようです、
>というのが私の話です。
そういう、
取って付けた様な表面的な説明では駄目
というのが私の話です。

>特にプロパティあたりは、コンセンサス有るんでしょうか?
これは、上の「保証」と関連していると思いますが、
私が「ドグマ」という言葉を使ったのは、
正に「コンセンサス」が無いからこそ、使った訳です。
「保証・コンセンサス」を非常に気にする辺り、「教条主義」の臭いが少ししますね。
#「コンセンサス」は場合によりますよね?

>ええと。「メソッド」という単語は、
>どこでどう定義されたものを使って
>今話してらっしゃいますか?
一般的に、「プログラミング言語」で「ファンクション・プロシジャー」であったものが、
「オブジェクト指向言語」では、実質的には同じものが「メソッド」と呼称されます。
この「メソッド」です。

>#私が日頃関わってる言語だと、こういう場合は
>#「メソッドvsファンクション」じゃなく「メッセージvsメソッド」と呼称します。
ここで、
「メソッドvsファンクション」
を問題にしているのは、私です。
その「私」の意図を差し置いて、どうしてguionさんが、私の表現したい事が
「メッセージvsメソッド」
であると言えるのか、不思議です。
#基本的な部分で考え方に問題ある気がします。

>「ドグマ」という言葉の意味はよく知りませんが、
>「決め付けを充分に少なくしておかないと、モデリング言語として役立たずとなる」
>であろうとは思います。
私は、「ドグマ」という言葉は、特に重要視して使っている訳です。
出来れば、辞書を調べるなりして、理解して欲しいですね。

>それは、名前空間次第だと思います。
>どこで定義された語なのか?という問題。
私が敢えて
「プロパティ・メソッド」->「モデリング言語」
「フィールド・ファンクション」->「プログラミング言語」
と書いたのは、その「名前空間」を少しでも限定する為にこそ使っています。

>なんとなく(^^;プロパティと呼ばれてるものを見回すと、
>確かにそれは「フィールドとかより高級なもの」を指している
>ようだとは、見て取れます。
私は、「なんとなく」ではいけないと考えているからこそ、ここでこうして書いてる訳です。
#実は、私は3年程前から、こういう主張をしています。

>>これらの概念を支える視点を強いてあげれば、
>>「プロパティ・メソッド」->「モデリング言語」
>>「フィールド・ファンクション」->「プログラミング言語」
>>と言えると思います。
>そういうくくり方は、 (このThreadの文脈つまり名前空間では)
>不味いんじゃないでしょうか?
上でも書きましたが、私は「名前空間」をある程度限定する為の記述である事を強調するために、
「概念を支える視点を強いてあげれば」
と書いている訳です。
それを、今度は
「くくり方」が不味いと捉える訳ですか?
#この調子だと、恐らく、かなりの部分でguionさんは誤解されているんだと思います。

>ここの文脈だと「プロパティ」は
>UMLとかなんとかから出てきたわけではない、
>特定のプログラミング言語(C#)での用語、でしょうから。
>というか、C#のプロパティは、元を正せば、
>これまたプログラミング言語であるDelphiの真似でしょうから、
>ますますモデリング言語との縁は薄そうです。
私がここで出来る事は、みなさんに「プロパティ」を理解する
「切っ掛け」
を与える事だけです。
私が切っ掛けを与える為に行っている説明だけで、全てを考えないで下さい。

それから、「Delphiの真似」という表現が理解出来ないですね。
「Delphi」も「C#」も「Anders Hejlsberg」がメインで関わっている訳ですから。

guionさんが
「ますますモデリング言語との縁は薄そうです。」
と考えるのは、自由です。

>一方、モデリング言語だということになってる(^^;UMLには
>プロパティが無いわけで…
>なんというか、「逆転現象」が生じていますね。
>で、私としてはこの逆転は「興味深い(というか傍で笑って見てる感じ)」んですが、
>objectさんとしては、もしかして「認めたくない」という感じ、だったりするんでしょうか?
この辺の文章をみる限り、私が書いている内容を余り理解されていない様です。
私は、
「私が認めるかどうか」
というレベルでは一切書いていません。
歴史では、guionさんのいう「逆転現象」は何度も起きていますよね?
「コンセンサス」を重視している限り、避けられない事ではないでしょうか?

>ちなみに私が笑っていられるのは、
>名前空間が別だ(と少なくとも私は見なしてる)からです。
>統一を焦ってないから。

私も、必要性を感じていない人に説明したいと焦っている訳ではありません。
#ハッキリ言って、私は「傍で笑って見ている人」に、真面目に答える気はしないですね!

この辺で終わります。
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-01-07 12:58
objectです。

>コモンセンスさん
>いいえ、「(オブジェクト指向)プログラミングの世界」
>と書いたように、オブジェクト指向 = プログラミングの世界
>と考えているわけではありません。
>しかし、いまのオブジェクト指向はプログラミングの世界から
>離陸できていないとは思っています。
それでは、「(オブジェクト指向)プログラミングの世界」と書いた意図は何でしょうか?

>振舞ならもうすこし一般的になりますね。
>それならメソドなどと言わずに、より一般性のある別の言葉を
>当てればよいではないかと思います。(そういうところに離陸度の
>不徹底を感じます)
それでは、何と呼べば良いのでしょうか?
重要なのは、「概念」の中身ではないでしょうか?
私はタームとしての「メソッド」をシッカリ定義すれば良いと思います。

>抽象化はきわめて重要なことですから、
>抽象化されていることは(私にとっては)
>美点でありこそすれ欠点とみなすことは
>ありません。
「メソッド」に相当する「概念」は、「写像(射)」であると私は思っています。
従って、私から見れば、「メソッド」も「振舞」も五十歩百歩です。
#実際、「情報、振舞」は全く異なる解釈も出来ると私は思います。

>これは抽象化しすぎてはいないでしょうか?
>XX = 写像 と言ってしまえば、XXのところには
>なにでも当てはまってしまいます。
>プロパティも写像ではないですか
>メソドとはどういう写像かまでを言わないといけない
>のではないでしょうか?
>そもそも(オブジェクト指向をはじめとする)
>モデリングというものは、「適切な」抽象化が
>本旨であり、「徹底的な」抽象化は数学の仕事では
>ないでしょうか?
># もちろんいつでもカテゴリ論のようなレベルに
>形式化できる用意があるということはよい試金石
>であるとは思いますが。
「抽象化」が間違ってない限り、つまり「主概念」が捨象されない限りし過ぎという事は無いと思います。
確かに、「オブジェクト」が「写像」の場合は「プロパティ」が「写像」になる事はあります。
しかし、その場合の「メソッド」は、「写像群間の写像」になるのではないでしょうか?
#実際、簡単に言えば「プロパティ」は「クラス」のインスタンスで「クラス」は「メソッド」を含んでいます。

私は、「シッカリした抽象化」=「必要十分な抽象化」が「各レベルの抽象化」を支えると思っています。
コモンセンス
会議室デビュー日: 2005/01/05
投稿数: 15
投稿日時: 2005-01-07 14:05
コモンセンスです。

objectさんの書き込み (2005-01-07 12:58) より:

>それでは、「(オブジェクト指向)プログラミングの世界」と書いた意図は…?

最初は「プログラミングの世界」と書いたのですが、修飾詞を付けて限定して
おいたほうがよいかなと思い、「(オブジェクト指向)」を付記しました。
おおきく誤解させてしまったでしょうか?

>それでは、何と呼べば良いのでしょうか?

「アクション」と呼んでいる先進的研究者はいたように思います。

>重要なのは、「概念」の中身ではないでしょうか?
>私はタームとしての「メソッド」をシッカリ定義すれば良いと思います。

その点はすこしこだわるべきと思います。(それにはobjectさんも同意されると
思っていたのですが)
「適切な名前をつけよ」はプログラミング作法の教えるところですが、
モデリングやその基礎論ではさらに重要な意義をもつと思います。
定義しさえすればよいと言って「オブジェクト」や「プロパティ」や
「クラス」を他の「符号」に置き換えてオブジェクト指向が成り立つでしょうか?

# そもそもソフトウェア科学(の半分?)も「定義しさえすればよいのではない」
ところから出発しているのではないでしょうか? 機械語プログラムだって
なにかを立派に定義してはいます。

>「メソッド」に相当する「概念」は、「写像(射)」であると私は思っています。

前回私が書いたのは、それではまだメソッドというものをスペシファイ
できていない、ということでした。ご存じのとおり、「すべては射だ」
というのはカテゴリ論者のスローガンでもありました。
# モデリング概念を抽象的レベルでスペシファイされようとしている点は
共感していますが
object
ぬし
会議室デビュー日: 2002/03/20
投稿数: 338
お住まい・勤務地: 香川県高松市
投稿日時: 2005-01-08 13:49
objectです。

>コモンセンスさん
最初に、少しだけお願いがあります。
私は、基本的には全ての問いかけに対して応え、相互理解に努めている積もりです。

コモンセンスさんも、私が付けたレスに対して、或る程度のレスを付けて頂けないでしょうか?
摘み食いで一部に対してだけ返答されると、
単に無視されたのか、同意を得られたのかが、私には分かりません。
#コモンセンスさんは納得出来ていらっしゃるのか知れませんが、結局相互理解には繋がらないと思います。

>最初は「プログラミングの世界」と書いたのですが、修飾詞を付けて限定して
>おいたほうがよいかなと思い、「(オブジェクト指向)」を付記しました。
>おおきく誤解させてしまったでしょうか?
私も、「オブジェクト指向とは何か?」という観点から、
「ドメイン空間」と「ソフトウエア空間(プログラミングの世界)」に少し拘っているものですから、少し気になりました。
コモンセンスさんの意図は分かりました。
現時点では、取り合えず問題の対象から除外します。

>「アクション」と呼んでいる先進的研究者はいたように思います
私も、「アクション」が悪いとは思いません。
#しかし、「アクション」では「passive」なものが除外されてるイメージはないでしょうか?

>その点はすこしこだわるべきと思います。(それにはobjectさんも同意されると
>思っていたのですが)
>「適切な名前をつけよ」はプログラミング作法の教えるところですが、
>モデリングやその基礎論ではさらに重要な意義をもつと思います。
>定義しさえすればよいと言って「オブジェクト」や「プロパティ」や
>「クラス」を他の「符号」に置き換えてオブジェクト指向が成り立つでしょうか?
「抽象概念に対する名称の付け方」というのは、「代表系」の選び方と言って良いと思います。
「オブジェクト指向システム分析・設計入門」で「青木淳さん」も言っておられますが、その1つに、
比喩(換喩、提喩、隠喩、直喩)等
があると思います。
これ以外にも考えられると思いますが、
要するに抽象度が高ければ高いだけ、1つには絞れない事が多い訳です。

私も、「概念の名称」には拘るべきだと思っています。
「定義しさえすればよい」という表現は少し乱暴だと思います。
実際、
「プロパティ・メソッド」に相当する概念が曖昧な状態で、
最適な名称を考えるという事には、無理があると思います。

私が言いたいのは、要するに今の状況では、
「メソッド」「プロパティ」の名称に拘るよりは、その概念の中身を明確にする方が重要だという事です。
#概念が明確で無いのに、名称を付ける事は問題だと思います。
#勿論、概念を明確にし、名称をさらに適切なものにするという提案には反対しません。

># そもそもソフトウェア科学(の半分?)も「定義しさえすればよいのではない」
>ところから出発しているのではないでしょうか? 機械語プログラムだって
>なにかを立派に定義してはいます。
この部分に関しては、仰りたい事が理解出来ませんでした。

>前回私が書いたのは、それではまだメソッドというものをスペシファイ
>できていない、ということでした。ご存じのとおり、「すべては射だ」
>というのはカテゴリ論者のスローガンでもありました。
># モデリング概念を抽象的レベルでスペシファイされようとしている点は
>共感していますが
私は、「射」という言葉は必要以上には使わない様にしています。

それから、私の主旨を簡単に書けば
「フィールド」が純粋に「データ」であった「C」等の言語から、
「フィールド」が「メソッド」を含んだ「オブジェクト」に変化した「C++」等の言語では
概念の基本的な部分での整理が必要である
という事です。

私も、基本的な部分では、「コモンセンスさん」と近いのかなと感じています。
コモンセンス
会議室デビュー日: 2005/01/05
投稿数: 15
投稿日時: 2005-01-08 18:22
コモンセンスです。

objectさんの書き込み (2005-01-08 13:49) より:

>…私が付けたレスに対して、或る程度のレスを付けて…

失礼しました。極力そう努めます。
すこし釈明させていただくと、私は、こういう場での問答に
際しては(普段も、「簡潔に/本質的なことだけを/肯定的に」
をこころがけています。後者はたとえばグレーのところは意識して
好い方向に解釈するなどです。そのことから、中に了解できない
ところがあってもそれが双方にとってさほど本質的でないだろうと
思われるところは適度に思い切って無視する(否定的な意味でなく
保留するという意味で)というやりかたをやってきました。もちろん
議論の勝ち負けのようなことには全く関心がありませんから、
レスポンスしないところは了解したと思っていただいても結構です。
こういう場で一言一言とらえているとつい口げんかのようになって
しまうということもときにあるからです。しかしobjectさんの場合は
そういう心配はなさそうなので極力こまめにレスポンスさせていただきます。

>現時点では、取り合えず問題の対象から除外します。

了解しました。

>#しかし、「アクション」では「passive」なものが除外されてるイメージはないでしょうか?

よい論点と思います。その研究者はこの点についてもなかなか
うまい説明をしていましたが、どういう説明であったか
思い出せません。

>「抽象概念に対する名称の付け方」というのは、「代表系」の選び方と言って良いと思います。
> (中略)要するに抽象度が高ければ高いだけ、1つには絞れない事が多い訳です。

ここは保留です。私の論点とはマッチしていないように思いますので。

>「プロパティ・メソッド」に相当する概念が曖昧な状態で、
>最適な名称を考えるという事には、無理があると思います。

こんな基本概念が曖昧なのは理解しにくいです。その理由はなんと
なく察しはつきますが。

>要するに今の状況では、
>「メソッド」「プロパティ」の名称に拘るよりは、その概念の中身を明確にする方が重要だという事です。

これらの概念の中身が明確になるとはたとえばどんなことを
想定されていますか? 先にも書いたように「それは写像である」
と言っても明確にはならないと思うのですが。

>#勿論、概念を明確にし、名称をさらに適切なものにするという提案には反対しません。

それを期待します。

>># そもそもソフトウェア科学(の半分?)も「定義しさえすればよいのではない」
>>ところから出発しているのではないでしょうか? 機械語プログラムだって
>>なにかを立派に定義してはいます。
>この部分に関しては、仰りたい事が理解出来ませんでした。

たとえば高級プログラム言語もアセンブリ言語も正確さにおいては
同等だがソフト科学の発展は高級言語の方に向かってきたのはなぜ
でしょうか?というようなことをいわんとしたのですが、冗長部分では
ありました。

>私は、「射」という言葉は必要以上には使わない様にしています。

了解しました。

>それから、私の主旨を簡単に書けば
>「フィールド」が純粋に「データ」であった「C」等の言語から、
>「フィールド」が「メソッド」を含んだ「オブジェクト」に変化した「C++」等の言語では
>概念の基本的な部分での整理が必要である
>という事です。

すみません。ここはそうなのですね、と思いました。

>私も、基本的な部分では、「コモンセンスさん」と近いのかなと感じています。

そうですね。近いからこそさらにご意見をお聞きしたかったのです。
guion
常連さん
会議室デビュー日: 2004/12/24
投稿数: 30
投稿日時: 2005-01-09 15:34
objectさんの書き込み (2005-01-07 12:44) より:

>私は、見て頂いていないと判断しましたが、全ての方に同じ内容の説明をするだけの時間がありません。
>従って、他の方へのレスも読んで頂けないでしょうか?

すみません。他のはまだ読んでいません。
消化不良に陥りそうなので頭から順番に消化しようと思っているんですが、
ダメですか?
後続のものも読んでおいたほうが、却って消化を助けそうだ、ということですか?

といいますか、これをPostし終わったら、次を読もうと思っています。
1つを読んで自分が思ったことをOutputしないうちに次を読むと混乱してしまうので、
読む→書く→読む→書く…というサイクルを、あまり崩したくないところなんですが。

> 「内輪用語」という事で何を仰りたいのかが理解出来ませんが、

C#(なりなんなり)という特定の言語仕様がその意味を定義するところの、
(一例として)プロパティ、という語です。

>>その本質な概念と、
>>ここで話題になってる言語仕様(C#とか)の内輪用語としての「プロパティ」
>や「メソッド」とが
>>どういう関係にあるのか?ってのが、まず問題かと。
(中略)
>「プロパティ」と「メソッド」とがどういう関係にあるのか?
>を重要視しているからこそ「情報・振舞」をあげて説明している訳です。
>それに対して
>>まあそれはいいんですが
>という表現は、少し矛盾していますよね?

いや、そうじゃなく、

(C#の)プロパティ(1)<=>(C#の)メソッド(2)



情報(3)<=>振舞(4)

という4つ言葉が登場するわけですが(他にも有りますが、とりあえず)、
objectさんが3と4の関係を説明してるという一方で、
私は1と3、あるいは2と4の関係はどうなってるんでしょう?と問い掛けてるわけですから、
互いに直交する(互いに影響しあわず共存可能な)問題なんじゃないでしょうか?
だから「それはいいんですが」と言ったんです。


>>外界の定義(もし有るならば)との互換性が取れてる保証が無いのでは?
>ここでも「互換性が取れてる保証」という表現で、何を仰りたいのでしょうか?

objectさんの「情報、振舞」の説明が、なぜ「このスレッドで」出てくるのか?が疑問に思えたんです。

(C#)のプロパティは、(objectさんの言う)情報に、
丸ごと包み込まれる(よって互換性もある)ような概念なのでしょうか?

そのことを(objectさんは)どうやって「保証」するんでしょうか?
…というのが気になったんです。
それが出来ないと、ここでそれを説明しても、「的外れ」になってしまいそうですので。

それとも、包み込んでいる保証は出来ないが、それはさておいて(つまりC#とは切り離して)、
ここで「情報」というものの説明をしておきたいぞ、ということでしょうか?
もしそれならば、それでOKです。議論として辻褄は合います。

>「保証・コンセンサス」を非常に気にする辺り、「教条主義」の臭いが少ししますね。
>#「コンセンサス」は場合によりますよね?

保証は教条主義でしょうけど、コンセンサスは教条主義ではない、のでは?

それはさておき、
「言葉」やそれをbindする「意味」は、
誰かお偉いさん(笑)が定義するとか、
経緯はともかく大勢が結果的に認めてる(コンセンサス)とか、
あるいは今この場に限ってはそのように定義しようとする(お約束)とか、
というような、なんらかの合意がないと、「通じない」ですよね?

#まさか、自分で定義した言葉を説明なしで使い始めるわけにはいかないですから。

で、いきなり「情報、振舞」の話が始まったので、不思議だったのです。


>>ええと。「メソッド」という単語は、
>>どこでどう定義されたものを使って
>>今話してらっしゃいますか?
>一般的に、「プログラミング言語」で「ファンクション・プロシジャー」であ
>ったものが、
>「オブジェクト指向言語」では、実質的には同じものが「メソッド」と呼称さ
>れます。
>この「メソッド」です。

>>#私が日頃関わってる言語だと、こういう場合は
>>#「メソッドvsファンクション」じゃなく「メッセージvsメソッド」と呼称
>します。
>ここで、
>「メソッドvsファンクション」
>を問題にしているのは、私です。

あれ?
「ファンクション」と「メソッド」のついて、
上で「実質的には同じもの」と仰ってるのに、
下で「vs」という言葉を出している。

同じと見なすんですか?
違うと見なすんですか?

もちろんこれは、AllOrNothingなものとは限らないので、
「どういう点において」同じまたは違うのか、が
語られないと意味がないわけですが、
それは、「後続のものも読んで」おくと判るのでしょうか?

>その「私」の意図を差し置いて、どうしてguionさんが、私の表現したい事が
>「メッセージvsメソッド」
>であると言えるのか、不思議です。

すみません。どういう話をしようとなさってるのか、いまいち読み取れなかったので、
「もしかしてこれかな?」という案を1つ推測して挙げさせてもらいました。

(この応答から推測:-)すると)外していたようですね。すみません。

ただ、「意図を差し置いて」と仰いますが、
その意図が(少なくとも私には)読めなかった、のは事実です。
意図を読むための(少なくとも私にとって)充分な情報は、無かったのです。
#だから推測などという(愚かな)ことをしてしまったわけですが。
その状態では、objectさんの「意図」に沿う発言は、どのみち出来ないわけです。
そのへんはご容赦願います。

つまりこちらの要望としては、「じゃあ意図がわかるようにしてください」です。
勿論こちらのほうの努力不足の恐れも多分に有りますが。

ところでこちらの意図はご存知ですか?
それそこ説明せず書いてしまいましたので、読めなくて当然なのです(ごめんなさい)が、
「おそらくobjectさんが言ってるのであろうメソッドとファンクション」について、
「だったら」それとほぼ同じ概念は、ある世界では、メッセージとメソッドと呼びます、と
言ったまでです。

といいますか、それこそ単語なんて、各名前空間の中で、どーとでも加減できますので、
「objectさんが真に仰りたかったメソッドとファンクション」を
「メッセージとメソッド」という言葉に丁度マッピングしてしまってる名前空間が
有ってもおかしくないわけです。

objectさんが何処の名前空間を意図なさってるのか読めなかったもので、
「じゃあこっちも勝手に名前空間を用意しちゃうぞ」ということをしてみました。
…すみません。

というわけで要望としては、「名前空間は何処のを使っていますか?教えてください」です。

>私が敢えて
>「プロパティ・メソッド」->「モデリング言語」
>「フィールド・ファンクション」->「プログラミング言語」
>と書いたのは、その「名前空間」を少しでも限定する為にこそ使っています。

「少しでも限定」ですか?
すると、それこそ「あやふや」な部分が
少し(というか少なからず?)あるってことですね?

「あやふや」であること自体は悪いことではないのですが、
じゃあ、私の話における「プロパティ」とかの語の出自の「あやふや」さも、
同じくらいにアリですよね。
その点はご容赦いただけますか?

>それを、今度は
>「くくり方」が不味いと捉える訳ですか?

はい。C#のプロパティの話が発端だったのに、そこからは脱線してる、と思ったからです。
つまり、C#のプロパティと、objectさんが仰るプロパティは、同じではない可能性がありますよね。

「C#のプロパティはとりあえず忘れましょう」ということでしょうか?
それならばそれでOKです。

#でも、そういう場合は、新しいスレッド作るほうが良くないんでしょうか?
#私はここの文化はまだよく知らないので、「これでいい」のかどうかは判断しかねてます。
#ただ、後から読むときの読みやすさは、確実に落ちますよね…

#つまりですね。議論としてはおかしいわけじゃないんですが、
#議論の場は、移したほうが良かったりしないんでしょうか?ということです。私が気にしてるのは。
#で、objectさんの仰ってる内容については未消化なので、「どこに」移ればいいのかは私には判りません。

>私がここで出来る事は、みなさんに「プロパティ」を理解する
>「切っ掛け」
>を与える事だけです。

それは、objectさんの仰る(つまりC#のとは違うかも知れない)プロパティ
についての理解ですね。

切っ掛けってのはアリだと思います。
ただ、だとすると、議論そのものがココで始まるのもアリなのかどうか疑問に思います。
なまじ要となるプロパティという語が被るため、紛らわしくて困るのではないかと思います。
新規スレッドを(.NETじゃない会議室に)立てる、とかのほうが良いんじゃないでしょうか?

#新規スレッドを立てるのがどれくらい「負担」なのかも、よく知らない状態でモノを言っています。ごめんなさい。

あ。議論が始まるのが問題だ(と思ってる)、という言い方は、ちょっと不正確でした。
「こんなに濃い内容」議論が始まるのはどうかと思ってる、といったところです。
つまり程度問題です。
ただ、基準があくまで自分の目でしかないので恐縮ですが。

>私が切っ掛けを与える為に行っている説明だけで、全てを考えないで下さい。

「だけ」というにしては既にかなりの文量になっていますね。

>それから、「Delphiの真似」という表現が理解出来ないですね。
>「Delphi」も「C#」も「Anders Hejlsberg」がメインで関わっている訳ですから。

ええ。Hejlsberg氏については存じてます。
ただ、企業単位で見れば、結果的にこれは「真似」です。B社をM社が真似たわけです。
どんな個人をHeadHantしたかなんてな情報は言わば実装の詳細みたいなものです。

>guionさんが
>「ますますモデリング言語との縁は薄そうです。」
>と考えるのは、自由です。

C#のプロパティが「モデリング言語との縁が薄い」ってのは、
それなりに言えてることじゃないですか?
(無論、遠縁であることは否定しませんが、べったりでもない。)

objectさんが仰るプロパティについては、また話は別です。

>私は、
>「私が認めるかどうか」
>というレベルでは一切書いていません。

もちろん、ご自分の意図としては、そうでしょうね。

でも、例えばプロパティという語については、この場では
既にC#の奴とコンフリクトを起こしてるわけです。

で、この手のコンフリクトが起きたら、
それを「人間が意思によって」解決(選択)せざるをえません。
#CVSのチェックインのコンフリクトみたいに…。

そして今回は、その「意思」はobjectさんの意思だと思います。

つまり、例えばプロパティならプロパティという語について、objectさんが説明したい意味が、

○現状、どこ(どの名前空間)まで有効なのか
○どこまで有効で「あって欲しい」と期待なさってるのか

が、ちょっと読めなかったということです。

objectさんが、例えばプロパティという語の意味のコンセンサス(^^;を
(意識すらしないままに)どこまで期待なさってるのか?が判らなかったということです。
申し訳ないんですが、私の目には、
C#の話とobjectさんが仰りたい話とが、objectさんの書いた範囲では、ごっちゃになってる、
というように見えてしまいました。
名前空間の切り離しの説明が「不十分」だ、と。

説明の追加が、後続の文章でなされているならば、申し訳ありません。

>私も、必要性を感じていない人に説明したいと焦っている訳ではありません。

なんの必要性をですか?

C#のプロパティという定義を、(objectさんが仰る)プロパティという定義で、
「乗っ取って(overrideして、統一して)」しまうことの必要性ですか?

もちろん、こんなことは誤解であることを期待しているんですが、
私はとりあえず今の所、 objectさんがやってることが上記のように思えてしまっています。

私は、もしそういう必要性ならば不要だと思っているという意味で、
「いろんな名前空間で、いろんな定義が出てきても、笑ってられる」
と言ったつもりです。
あんまり百家争鳴しすぎるのもウンザリしますが、かといって
断り書きが不要な1つの定義に落ち着くこともまた、期待すべきではない、と思っているということです。

どうなんでしょうか?

----
ところですみません。重要な質問を忘れていました。

objectさんが仰りたい「プロパティ」は、
「上位の、設計レベルとかの、概念」ですか?


guion
常連さん
会議室デビュー日: 2004/12/24
投稿数: 30
投稿日時: 2005-01-09 15:57
ノリックさんの書き込み (2005-01-04 10:40) より:
>会社の先輩にも確認したところ、プロパティのほうがUMLで書いた場合にわかりやすくなるという意見もありました。

あれ?
(細かくいえば)UMLには「プロパティ」は無いんでしたよね?

何で代用なさっていますか?
やっぱり属性?

でも、属性じゃ、なんか違うというか役不足というか、そういう感じがしています。
(単に読み書きしただけのときに生じるかも知れない)裏に隠れた処理について
説明しにくくなってしまうんで。

プロパティ(少なくともDelphi/C#系の)って、
裏の属性またはメソッドへのエイリアス(かつ、値を持つ)なんで、
UMLのクラスに第4の欄をつけてそこにプロパティを書き、
そして、個々のプロパティから、その裏の属性やメソッドに対して、線(依存の線とかかな)を引けたら
いいなあ、と思うことがあります。

----

あれ?
それにしてもこれは面白い問題かも知れないなあ。

状態(元を正せば属性値)を取り出すためには
メソッド(あるいはそれをラップしたプロパティ)を
経由しないとならない(経由することが推奨されます…よね)、と。

Object指向において当然のように言われてる、この話ですが、
その雰囲気を、UMLのクラス図では、旨く描けないってことじゃないかな…?

例えば、属性値のデフォルト値は書けるけど、
メソッド(プロパティでラップされてるかも知れないが)の返し値のデフォルト値って、
書けましたっけ?ダメだよね?

ちょっと考えてみます。 (それこそ会議室違いだろうし…)

----

待てよ。
そういやUMLには「派生属性」という便利なものがありましたね。
そうか。プロパティの表現には、あれを使えばいいのか。

忘れてました。あはは(^^;

スキルアップ/キャリアアップ(JOB@IT)