《余録》テストケースの行間を読む #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


関連記事

Last updated♪2010/01/22