Programming Methodology 18

今回は、実際にバグをつぶしていく過程を実演しながら、デバッグについて熱く語っていました。

  • 配列の復習
    • ArrayList
      • pros:dynamic resizing/other ops
      • cons:less efficient than array/syntax balky(pre 5.0)
    • array
      • fixed size
  • Debugging
    • 役割
      • Design -> Architect
      • Coding -> Engineer
      • Testing -> Vandal(プログラムを破壊しようと試みる)
      • Debugging -> Detective(破壊された原因を捜査して修正する)
    • Design -> Development -> Debugging -> Deployment
      • 先の工程に行くほど、修正するのに10倍のコストがかかる
      • Designの時点で見つけられるミスと比べると、Deploymentの時点で発見される問題は1000倍の負荷がかかってしまう
    • Bugの種類
      • bad values
      • faulty logic
      • unwarranted assumptions
    • 回避するには
      • simple
      • systematic
      • assumptions about problems
      • critical(批判的にコードを読む)
      • Don't panic!
    • Debuggingの方法
      • printlnを使う(メソッドや変数に対して)
      • Unit Test
    • EclipseでのDebuggingの実演
      • BreakPointを指定する
      • BreakPoint時点でのstackFrameが表示される
      • 変数の中身が表示される
      • 1step毎処理を進めてみる