あ、Nilのときだけ値設定するというやり方は、、先に進む前にもう一つだけ、 <株入門>


先に進みたいのですが、留意点がひとつあり、言及します。

これは以前にも、不具合の元となったことで、 
./lib/stats.rbで言うと、

def profits
 @profits ||= @trades.map {|trade| trade.profit}
end

このやり方です。

profitsにまだ値が設定されてなければ、計算する。
既に値が設定されていれば、その値を返す。
ってことですが、
こんなやり方してるのは、毎回計算するのがムダだからです。

問題もあり、
ここではtrades、計算の元となるデータが差し替えられると、
再計算が必要ですが、このやり方では再計算されず、
古い値を返してしまいます。
 
そういう可能性が無いことを確認した上で、
計算回数を減らすというメリットを享受しなければなりません。

後から機能追加したときに、
思わぬ不具合を起こしたりしかねないですから、
私はこのやり方反対です。
 
コンストラクタでしか、tradesを設定する可能性が無いなら、
コンストラクタで一度計算してその結果を常に返すようにしますね。
他にも設定のタイミングがあるのなら。
設定するタイミングで計算結果も格納するという原則にしときます。

どうせ、Rubyは遅いのに、そこだけ微々たる処理速度向上させてもね。
毎回計算でもいいです。焼け石に水ですから。

私は推奨しないやり方ですし、
ヤルには充分注意が必要です。リスクのわりにメリット少ない。
 
 
話変わりますが、今年の日本シリーズ第一戦古田が解説してました。
一三塁で広島がダブルスチールしかけて、
キャッチャーはピッチャーカットのサイン出してて返球。
しかし、大谷はスルーしてセカンドにボールが、、
ピッチャーカットで、ホームに返す予定ですから、
野手は戸惑い、三塁ランナーはホームイン。
 
古田曰く、
このプレーはピッチャーよくサイン見落とす。
ピッチャーカットしても、首尾よく三本間で挟めるとも限らないから、
あまりメリット大きくない。
最悪、ポールはセンターまで転がる可能性もあり、
リスクのわりにオイシくない。

「ボクなら、セカンドへ投げない。たとえ一塁ランナーが二塁に進んでも。」 
と名捕手は解説してました。

 
野球知らないとなんのこっちゃですが、
まあ、そんな感じです。
 

質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

カテゴリー: 株式投資, 株式投資入門はじめました2016.05 タグ: , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*