[SML 7222] Re: メソッド名について

NOBUTAKA Terauchi europa @ ps.inforyoma.or.jp
2006年 10月 7日 (土) 03:35:41 JST


こんばんは、寺内です。

横川さん、具体的な助言ありがとうございます。

> しかし、Smalltalkのような動的に型を決定する言語だと、意味が似ているから
> といってまったく同じ名前をつけることには危険があります。
> 
> 「既存のライブラリ内で使われているメソッド名は(特別なとき意外は)使わない」
> 
> たとえばあるOrderedCollectionインスタンスに値を入れるだけだからといって
> 「at:」をうっかりそのまま使ってしまうと、あとで「そのクラスのat:」を呼び
> 出しているところをsendersで探そうとしても膨大な数の「他のクラスのat:」の
> マッチに埋もれて見つけられなくなります。
> (ぼくはこの現象を「多態性洋(た・たいせいよう)に沈む」と呼んでいます;-)

なるほど、これは全く知りませんでした。
逆に、なるだけクラスライブラリで使用されているメソッド名にしたほうが良い
と思っていました。

> まったく同じメソッド名をつけても良い「特別なとき」とは多態性が成立すると
> きです。(詳しくは「リスコフの置換原則」を参照)
> この意味でも「includes:」を使うのは避けたほうが良いです。
> 
> そして、意味の似ているメソッドが見つからないときは、次のように新しく命名
> します。
> 
> 「クラス名を主語、メソッド名を述語みたいに発音して英語っぽくする」
> 
> ご存知の通り、Smalltalkはオブジェクトへのメッセージ送信によって処理を進
> めるという計算モデルを基本にしています。それにあわせるために、なるべく主
> 語・述語のような形にします。そして、そのように読んだときにメソッドの意味
> が伝わるかどうかチェックします。

また知らない単語がでてきた・・・・・。
Googleで検索、検索、
「リスコフの置換原則」-> 派生型はその基本型と置換可能でなければならない
ということですね。

> それでも、よさそうな名前がどうしても思いつかないよ!というときはたくさん
> あります。そんなときは腹をくくって最終手段です。
> 
> 「良い名前が思いつかないときは思い切って変な名前をつけてしまう」

了解です。すぐ、実行に移します。

> 「より良い名前を思いついたときには躊躇せずにリファクタリングする」


それにしても、投稿すればするほど、Smalltalkerへの道程があと何年からあと
何光年(死んでも無理)へ変わっていくと感じるのは気のせいでしょうか?

また、何か疑問点があれば投稿するのでよろしくお願いします。


-----
NOBUTAKA Terauchi<europa @ ps.inforyoma.or.jp>







SML メーリングリストの案内