プログラムのチェックリスト

プログラムの改善テクニック


  • 変数名に変数の型の情報を含めない。
  • 配列の要素の型が、要素で異なることを避ける。
  • コメントアウトされたコードは、しかるべきタイミングで削除する。
  • 使用されていない、あるいは、不要なコードは、削除する。
  • 自動的な型変換を避け、明示する。
  • if文などでの比較式は、変数が左、比較対象を右に書く。
  • switch case文 などで、defalutの処理は、主に例外的な処理をする。
  • 添え字でのループではなく、イテレーションやコレクションでの処理にする。
  • メソッド呼び出しが続く場合、インターフェースを作成するなどで、削減する。
  • 長すぎるメソッドは、小さく分割する。
  • 引数の型が多すぎるメソッドは、引数をオブジェクトにする。
  • メソッドが多すぎるクラスは、分割を考える。
  • 属性が多すぎるクラスは、クラスの分割を考える。



  • チェックリスト


    変数


  • 変数は、使う場所の近くで宣言する。
  • 変数の使い回しは、しない。
  • 未使用の変数をなくす。
  • 定数は、不変で宣言する。
  • グローバル変数は、使わない。
  • 変数はロジックの近くで宣言する。
  • マジックナンバーには、名前をつける。
  • 変数には意味のある名前を使用する。
  • 大文字/小文字の区別で、変数名を区別しない。
  • できるだけ変数のスコープを縮める。
  • 変数が、別の目的のために、使い回しされていないか。
  • 真偽値を判断するフラグをなるべく利用しない。状態を表すオブジェクトの利用を考える。

  • フォーマット・スタイル


  • 不等式(>など)の向きを統一する。
  • 空行を適切に挿入。
  • 構造がわかるようにインデントをつける。
  • 一貫性のあるスタイルを利用する。
  • 文の途中で改行したい場合には、次の行にインデントをつける。
  • 複数の文を1行にしない。(デバグが難しくなる場合も)

  • コメント


  • コードの意図をコメントに書く。
  • 古いコメントは、削除する。
  • 当たり前のコメントを書かない。

  • 配列


  • 配列のサイズは適切か
  • 配列のサイズを超えてのアクセスは、発生しないか

  • 演算


  • ゼロで÷可能性を考慮する。
  • 演算の結果、変数の制限を、オーバーしないかをチェックする。
  • データタイプの変換は、明示的に行う。
  • 異なるデータタイプを比較するとき、意図したデータタイプで比較されているか。

  • 制御構造(分岐・繰り返し等)


  • if文などのネストを浅くする。
  • if文で、二重否定を書かない。
  • gotoは、使わない。
  • 過剰な入れ子構造(繰り返しの中の繰り返し、条件分岐の中の条件分岐など) は避ける。
  • 例外処理は適切か。適切な処理やエラーメッセージ等を出力しているか。
  • if-then では、正常ケースを、if で処理する方がよい

  • 関数・ルーチン


  • コードを小さな関数に分割する。
  • ルーチンの引数は、入力、変更、出力の順に配置する。
  • 関数を短くする。
  • 関数やメソッドのオプション引数は、なるべく利用しない。
  • 関数やメソッドのデフォルト引数は、なるべく利用しない。

  • IO


  • ファイル等をオープンしたら、必ず閉じる。

  • その他全般・チェック項目


  • 使わないコードは書かない。
  • ソースが長くなりすぎていないか。
  • 確保したリソースは解放されているか。
  • ライブラリの機能を利用する。
  • 同じコードを二度書かない。
  • 一つの文の中で多くのことを一度に実行しようとしない。






  • 0 件のコメント:

    コメントを投稿

    アルゴリズムの考え方

    総当たりアルゴリズム すべての場合をためし、解を求める。 近似アルゴリズム  ・正解に近い解を探す ・正解との誤差がある範囲におさまると保証されているものを  精度保証付アルゴリズムという。 ・精度の保証のないアルゴリズムを、発見的手法(ヒューリスティック)    という。