これには非常にシンプルで実用的なアプローチがあり、小規模から中規模の幅広いプロジェクトで機能します。おそらく、火星探検家にとってはうまく機能しないでしょう。
まず、システムに何をしてほしいかを考え出し、個々の機能をメモします。これは、ユーザーストーリーボード全体のように高度なものでも、目の前の紙にいくつかの箇条書きを書き留めるだけの単純なものでもかまいません。しかし、何をしたいかを知っていることが重要です。
それに基づいて、システムの一般的な構造を作成します。繰り返しますが、これは非常に多くの場合、さまざまなクラス/モジュールとそれらの相互関係の簡単な説明ですが、ドキュメント全体と同じくらい複雑になる場合があります。重要なことは、システムをどのように実装するかについて何らかのアイデアがあることです。しかし、これはおそらく作業中に洗練されていくので、複雑で詳細なものにしようとしないでください。
これらすべての機能の中で、プログラムが実行する必要がある重要なこと、つまりコア機能を決定します。
次に、それらを1つずつ実装します。ここで重要なのは、機能を実装したら、これが完了して完全に機能することを実際に確認することです。理想的には、機能し続けることを確認する単体テストを伴います。私は通常、忙しすぎて機能に戻って修正する時間がないことを前提にしています。
コア機能が実装されたら、私は通常、システムを可能な限り実稼働環境の近くで使用するようにします。これにより、a)以前に見逃していた可能性のあるバグ、およびb)次の機能の優先順位を把握できます。
その後、必要に応じて残りの機能を実装し続けることができます。
コード品質と機能
上記を念頭に置いて、期限を設定する必要がある場合、コードの品質よりも機能を犠牲にする傾向があります。単純に、少なくとも私の仕事のラインでは、何かを終えたとき、私の経営者はそれが完了したと仮定するからです。そして、彼らは私に次のタスクを与えることができます。事後にコードをより良くする時間はあまりありません。
さて、例外処理はどうですか?
それをすぐに実装したくない場合は、リストの別の機能としてそれをリストすることができます。そして、それに到達したら、それを実装できます。しかし、おそらくあなたの場合、最初にもっと重要なことはおそらく他にもたくさんあります。
ただし、例外には最低限の要件があります。何かがうまくいかない場合は、ユーザーに通知するようにしてください。例外をどこかに飲み込まないでください。