仕様は変わっても真理は変わらない()より:
var amount = this.Amount;
var unitPrice = this.UnitPrice;
var price = amount*unitPrice;
varを多用していますが、数量に単価を積算して金額を計算するコードです。
このコードは単純な「真理」です。
「真理」であるから型が何になろうが、このコードの意味する事は変わらず永遠です。
さて、「ソースコードに型を書く」という事は「ソースコード上に仕様のスナップショットを断片的に残していく」事に他なりません。
要するに型名をソースコードに明確に書くという事は、ソースコードにその時点でのAmountはdouble型であったという事のスナップショットを残したわけです。
「仕様は変わっても真理は変わらない」というのは、まったくその通りだなぁ、と思うです。コメントの付け方であった、あれ?どこで読んだか覚え違いしていた...「何をしているかではなく、何をしたいかを書く」に近いものがあるのかなぁ、と。
で、思うです。「this.Amount の型は?」
!!ああ!!ここで言われているのは、「var amount は、this.Amount の変更による影響を受けない。」なのか!!this.Amount が Int32 でコーディングされていて、それが「Int32 じゃ足りねーじゃん。Int64 にしよーぜ」ってなったとき、this.Amount だけ修正すれば、その他の所は修正(推論)されちゃうんだ!!this.Amount を使用している箇所を探し回って、修正しまくる手間が要らないんだ!!
this.Amount と同じことを求めるなら、Int32 と宣言したい。けれどもここでは、「請求金額は、単価に数量を掛けたもの」がわかればよい。「Int32 の範囲である請求金額は、それぞれ Int32 の範囲である単価に数量を掛けたもの」である必要はない、と。
また、ここのソースを読む場合も、型まで読む必要はない。この関数が、何を元に、何を出力するかさえわかればよい、と。
なるほど~!!
投稿日時 : 2007年12月31日 22:56