大見出し
現在、paint_bbsプラグインはご利用いただけません。
忘れてはいけないこと
いろんなところで言われていて、自分でもようやく「腑に落ちたもの」を忘れないように書いておく。
なんだか納得したものは、その細かいところを忘れてしまうので、なるたけ記録しておこうと思う。
いろんなところで言われていて、自分でもようやく「腑に落ちたもの」を忘れないように書いておく。
なんだか納得したものは、その細かいところを忘れてしまうので、なるたけ記録しておこうと思う。
- 抽象クラスやスーパークラスで、サブクラスにぜひ実装してほしいものに、「詳細はサブクラスで定義してね」の意味をこめて、「^self subclassResponsibility」の定義を忘れずに。
- 何かの都合で要らなくなったメソッドや、ほかのオブジェクトに移動したメソッドには、プログラミングが一段楽するまで、「お応えできません」の意味をこめて、「^self shouldNotImplement」を定義しておこう。
そうすると、「virsions」の情報を残したまま、間違って答えたりしないメソッドを残しておける。もちろんコメントもつけておかないと、どこに移動したんだか、なくなったんだか、なんでそうしたんだか分からなくなるので注意。
- ブラウザのクラスペイン下のインスタンスメソッド、クラスメソッドを切り替えるスイッチの真中の「?」。これがなかなか使いでがある。
2回ほどクリックすると、そのクラスの上位スーパークラスから、下位サブクラスまでの階層と、インスタンス変数の継承を表示してくれる。
どのクラスで定義されてるか見ると、大変勉強になる。。
どのクラスで定義されてるか見ると、大変勉強になる。。
- Smalltalkのソースコードは印刷しても意味がない。あの環境に置いてあってこそ生きたものとして価値がある。
印刷して見ててもまるで、昔の証明写真を見て「この人はこんな人」と思ってしまうことに似てる。。
いわゆるソースコードだけみてても、なんにも判らない。判るようにするにはかなり大変。
いわゆるソースコードだけみてても、なんにも判らない。判るようにするにはかなり大変。
- ブラウザはたくさん開いたほうがなにかと効率的。開きたいだけ開く。
- いわゆるデバッガにあたる、生きてるオブジェクトのコンテキスト内のブラウザはとっても強力!
デバッガとかという独立したものでなくて、ほんとに単純にある瞬間生きているオブジェクトを捕らえているだけ、というのがまたシンプルで素敵。
ちょっとメソッドを書き換えて、そのまま制御を戻しても、ちゃんと動いてくれる。本当にいつも動的にオブジェクトたちが関係しているからなのね。すごい。
一つ一つのオブジェクト式を評価している様を見ながら、インスペクタで捕らえてリアルタイムにオブジェクトが変わっていくのを観察しているのは本当におもしろい。
まるでよくできたカットモデルで車のエンジンの動く様子を見た時みたい。
ちょっとメソッドを書き換えて、そのまま制御を戻しても、ちゃんと動いてくれる。本当にいつも動的にオブジェクトたちが関係しているからなのね。すごい。
一つ一つのオブジェクト式を評価している様を見ながら、インスペクタで捕らえてリアルタイムにオブジェクトが変わっていくのを観察しているのは本当におもしろい。
まるでよくできたカットモデルで車のエンジンの動く様子を見た時みたい。
- 集約をするのに、サブクラスをつかってはいけない。
スーパークラスの「ある一種」として定義されるべき。
- Collection系のオブジェクトは、なんとなくデータベースを扱っているときの感覚に似ている。データベースよりさらに自由度は高いけど、扱い方(なんともうまく表現できない)はデータベースのものを応用できる。
- Squeakはオブジェクトを指し示すのに、オブジェクトテーブルを使わずに直接ダイレクトポインタで指している。もちろんいいことも悪いこともある。
- オブジェクトを探すのにあたって。。
(1)
(2)
(3)
(2)
(3)