【ハウツー】
二昔前のプログラム仕様書といえば、1行ごとにどうプログラムを書くかまで詳細に記述されたもので、プログラミング言語への翻訳と入力だけがプログラミングだったこともありました(コーディングと呼ばれることもあります)。今でもそういう現場はあるでしょうが、全体的な傾向としては、プログラミングに前もって、あまりに詳細な設計を行うことは少なくなっています。
予め決められたことが少なくなるということは、細かいところは(もちろん人にも確認してもらいながら)自分で詰めていく必要があります。エラー系の処理や、内部の関数・メソッド分割など、細かいことですが、システム全体の品質に大きく影響を与える重要な仕様を設計することも、プログラミングという仕事の一環なのです。
そのような状況ですから、少なくとも経験の浅いうちは、資料を貰っていきなり開発環境に向かってプログラミングを始めることはお薦めしません。
資料を受け取って内容を理解したら、どのように実現するかをスケッチしましょう。なにを入力にしてなにを出力するのか、処理の流れはどうなるか、主要な変数にはどのようなものがあるか、発生しうるエラーはなにか。裏紙やホワイトボードにざっと書き出してみましょう。
そうすることで、考慮漏れを防ぐとともに、受け取った資料の不備に気づくこともできます。作るプログラムの全体が把握できますので、作業の段取りや時間配分もスムーズになります。
さぁ、ではコードを書き始めることにしましょう……。いや、ちょっと待ってください。ここで身につけて欲しい習慣があります。プログラミングとセットで、そのプログラムのテストプログラムを書くことです。
どのようなプログラムでも、このような入力があればこう動く、この入力ならエラーになる、という仕様があります。先にスケッチした設計がそれに当たります。設計した仕様どおりに動かなければバグということになりますが、大掛かりなテスト工程はプログラミングの数週間から数ヶ月も先になることがあります。そんな先になってからバグが分かっても、どこをどう直せばいいのか、すぐには分からないものです。であれば、プログラミングと同時に、できる範囲のテストをしてしまいましょう。
まずはコンパイルが通る最小限、メソッドや関数のインタフェースだけを書きます。returnは仮の値を返すようにしておきましょう。
public boolean isPositive(int arg) {
return false;
}
そうしておいて、そのプログラムを呼び出すテストプログラムを書きます。34
public void testIsPositive() {
if(Target.isPositive(1) != true) {
// バグであるから、テストはエラー。
System.out.println("failed.");
System.exit(-1);
}
}
テストプログラムを実行すると当然エラーになりますから、テストが通るようにプログラムを実装していきます。
このように、少しずつコードを書いては少しずつテストをするのを繰り返していくやり方で、バグを最小限に防ぐことができます。こうした手法を実践することを助ける、JunitなどのTesting Frameworkと呼ばれるものもありますので、活用してください。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
かまいたちら若手6組が激突! 『NHK上方漫才コンテスト』本選出場者が決定 [13:30 2/11] エンタメ |
|
[ミス日本「海の日」]初仕事で「ジャパンインターナショナルボートショー」をPR 編集部に来訪 [13:00 2/11] エンタメ |
|
[北島三郎]「目立たなきゃだめ」と話題の“オオカミバンド”を激励 [12:30 2/11] ホビー |
|
目的は一体!? 肥前夢街道に現るバッジ売りの少猫(佐賀県) [12:08 2/11] キャリア |
|
つらい花粉症は対策グッズで乗り切ろう! [12:07 2/11] キャリア |