コードコンプリート上(進捗47.3%)
わかったこと
人間が一度に認識出来るものは7±2である為、引数なども7以下にする。
継承
・継承ではスーパークラスのメンバデータはprivateにする。
・継承ツリーはなるべく浅くする。
メンバルーチンの呼び出しは出来るだけ少なくする。
コンストラクタでは可能であれば、全てのメンバデータを初期化する。
クラスを作成する理由
・複雑さを緩和する。
・コードの再利用を促進する。
クラスインターフェースは一貫性のある抽象化を実現する。
基本的は継承よりも包含の方が望ましい。
高品質のルーチンはプログラムの修正・再利用などが簡単になる
・ルーチンは機能的凝集度を意識して作成する。
・機能的凝集度はルーチンが1つの機能だけを実行する。
ルーチン名はルーチンが行う処理を明確に表さすこと。
一つのルーチンは100~200行(処理部のみで)が望ましい。
・ルーチンの引数は作業用変数として使用しない。
ルーチンとして独立させることが最も効果的なのは、単純な処理である。
関数は戻り値を返すルーチン。
プロシージャは戻り値を返さないルーチン。
「ゴミ入れ、ゴミ出し」なコードはやめる。
防御的プログラミングには、アサーションとエラー処理がある。
・バリケードを使用すると、アサーションとエラー処理を分けるのが簡単になる。
・アサーションはコードで絶対に発生すべきではないエラーを処理する。(入力値が想定のものより大きい等)
・エラー処理は発生することが予想されるエラーを処理する。(入力値がそもそも来ない等)
・例外処理は通常の処理とは別の次元でエラーを処理できる。