《余録》テストケースの行間を読む #1
Smalltalk-80 で作成した例題を、Python3.1 で再構成しました。
■ 学習のポイント
「行間を読む」ことの大切さは、コードだけではなく「テストケースを読む」ときにも当てはまります。そこに「書かれてあるコード」を理解するだけなら、アマグラマーにもできます。プログラマーには、そこに「書かれていないコード」を読み解く術が求められます。
《Tips》その道(未知)は無知に通ず:そこに「書かれていないコード」が意味するのは、
- そこにあるべきコードが何処にも記述されていない(反面教師)
- そこにあるべきコードが他に記述されている可能性がある(玄人)
という「相補的な視座が、プログラマーには求められる」ということです。また、第3の道として、
- そこにあるべきコードが何処にも記述されていないことに意義がある(達人)
にも思いを巡らせると、Code Reading も免許皆伝です。□
■ 先頭と末尾に着目する
「コードの行間を読む」でも解説したように、まず先頭と末尾に着目すると、
' 0: 零' ... '9999: 玖阡玖佰玖拾玖'
これは、実引数の有効範囲を暗に示したもので、上限 9999 と下限 0 の動作を確認したいのが分かります。範囲外の実引数を指定すると、
>>> itok(-1) Traceback (most recent call last): File "", line 1, in itok(-1) ... ValueError: invalid literal for int() with base 10: '-' >>> itok(10000) '〇'
例外 ValueError を生成するか、意味のない出力結果 '〇' が得られます。この問題を解消するための戦略として、
- コードを改善する
- 運用ケースに委ねる
が考えられます。この課題では「些細な違い」かもしれませんが、実業務では「開発コスト vs. 運用コスト」のトレードオフ問題(ジレンマ)を慎重に検討します。
《Tips》アマグラマー vs. プログラマー:「プログラム」の効率だけでなく「プログラミング」の効率にも配慮するのが、「アマ」グラマーと「プロ」グラマーとの立場の違いです。コストに関わるトレードオフ問題に、納期の問題(トリレンマ)が絡むと「異常ケースへの対処は次のリリースで…」と判断されたりもします。アマグラマーには「納期は無限の彼方」とも見なされるので、ときにプログラマーを凌ぐ優秀な作品を創る源があります。プログラマーには「best ではなくとも better なものを、安定して継続的に提供する」能力が期待されます。□
》こちらに移動中です《
↑TOP