3
4

More than 5 years have passed since last update.

CODE COMPLETE (上) -第2部 高品質なコードの生成 ⑤-

Posted at

自分の理解を深めるために投稿します。

第9章:擬似コードによるプログラミング

クラスとルーチンの作成手順

クラス

  1. クラス全体を設計
  2. クラスの各ルーチンを作成
  3. クラス全体をレビュー、テスt

ルーチン

  1. ルーチンを設計
  2. 設計を確認
  3. ルーチンのコーディング
  4. コードをレビュー、テスト

作成方法の1つに 擬似コードプログラミングプロセス(PPP) がある

  • 他にはテストファースト、リファクタリングなど

擬似コードプログラミングプロセス(PPP)とは

擬似コード

  • プログラムの仕組みを説明する略式の表記方法
  • 通常の文章に似ている

効果的にするために

  • 処理を正確に説明する文章を使用する
  • プログラミング言語の構文を使用しない
    • コーディングより少し上位レベルで設計をすること
  • 目的レベルで擬似コードを書く
    • どのように実現するかは考えない
  • ほぼそのままコーディングできる詳細レベルで擬似コードを書く
    • コードを簡単に書き起こせるレベルにしておく
// 良い擬似コード例

使用しているリソースの数を記録する
if 別のリソースが利用できる
    ダイアログボックス構造体を割り当てる
    if ダイアログボックス構造体の割り当てが可能である
        使用するリソースが1つ増えることを記録する
        リソースを初期化する
        呼び出し元から提供された場所にリソースの数を格納する
    Endif
Endif
新しいリソースが作成された場合はtrueを返し、そうでない場合はfalseを返す


// 悪い擬似コード例

リソース数を1つインクリメントする
malloc()を使ってdlg構造体を割り当てる
malloc()がNULLを返したら、1を返す
OSrsrc_initを呼び出し、オペレーティングシステムのリソースを初期化する
*hRsrcPtr = リソース数
0を返す

良い擬似コードの特徴

  • 言語に依存していない
  • 目的が理解しやすい
  • そのままコメントに転用できる

擬似コードを使う利点

  • 詳細設計のレビューがしやすくなる
  • 反復しながら詳細化できる
  • 擬似コードは変更が容易である
    • エラーを早めに捕捉することが大事
  • コメントの作成を最小限に抑える
  • 設計書を管理しやすい
    • コードのコメント内に存在するので、どちらかを変更するとすぐ反映できる

PPPを使ったルーチン作成方法

設計

  • ルーチンの役割を確認
  • ルーチンが解決する問題を定義する
    • 隠蔽する情報
    • 入出力
    • 事前・事後条件
  • ルーチンに名前をつける
  • ルーチンのテスト方法決定
  • 標準ライブラリが提供する機能を調べる
    • 無駄な作業をなくすため
  • エラー処理
  • 効率
  • アルゴリズムとデータ型を調査する
  • 擬似コードを書く
  • データについて考える
  • 擬似コードを検査する
  • 擬似コードでいくつかのアイデアを出し、最も良いものを採用する

コーディング

  • ルーチンを宣言
  • 擬似コードを概略レベルのコメントとして転用
  • 各コメントの下にコードを書く
  • コードが大量になったら、擬似コードを分解したり、ルーチンを分解することを考える

コードの検査

  • 次の作業に進む前にコードレビューする
  • まずは頭で確認
    • なぜ動くかきちんと理解できているか?
  • コンパイルする
  • デバッガでコードを実行
  • コードをテスト
  • エラーを検出したら取り除く

残りの仕上げ作業

  • インターフェイス検査
    • 全ての引数が使われているか
  • 設計の品質検査
    • 他のルーチンとの結合度は十分弱いか
    • 防御的に設計されているか
  • 変数を検査
    • 不正確な変数名になってないか
    • 使用されていない変数はないか
    • 初期化は正しくなされているか
  • ステートメントとロジックの検査
    • 無限ループ、不適切なネスト、リソースのリークはないか
  • レイアウト
  • ドキュメント
  • コメント

必要に応じて繰り返す

  • ルーチンの品質が悪ければ擬似コードに戻る
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4