現在、私はClojureのにリファクタリングしていたとき、私は、パターンを使用する傾向がある:リファクタリング時に戻り値の型を調べる良い方法はありますか?
(defn my-func [arg1 arg2]
(assert (= demo.core.Record1 (class arg1) "Incorrect class for arg1: " (class arg1))
(assert (= demo.core.Record1 (class arg2) "Incorrect class for arg2: " (class arg2))
...
私は自分自身が手動でシステムの下流部分は、私が「ドン何かにそれらを変更する場合の戻り値の型をチェック見つける、あります期待しています。 (私がリファクタリングして、私が期待していないスタックトレースを取得した場合、不変条件として私の仮定を表現し、そこから前進する)。
これはちょうどBertrand Meyerが予期している不変のチェックのようなものです。 (Object Oriented Software Constructionの著者、および考えの提案者Design by Contract)。
実行時までこれらを見つけられないという難点があります。私はコンパイル時にこれを見つけることができればうれしいです - 関数が何を期待しているかを単に伝えるだけです。
今すぐ私は知っている Clojureは本質的に動的言語です。 (Clojureにはコンパイラの種類がありますが、実行時に関数の値をアプリケーションに渡すことが期待されます)
リファクタリングを簡単にするためのパターンが必要です。 (つまり、引数を関数に変更して最初の呼び出しでブレークしなくても、次のブレークに移動してから次のブレークに移動するすべてのフローオンの効果を参照してください)
私の質問はですリファクタリング時に戻り値の型をチェックする良い方法はありますか?