メンテナンス性能

メンテナンス性能を上げるために私が心がけている点をまとめました。

  1. シンプレストに行こう
    同じ仕事ができるなら、プログラムは短い方がいいに決まってます。ひと一人が見渡せる範囲には限界があるので、プログラムのコンパクトさとメンテナンス性能とは直結しているのではないでしょうか。そしてオブジェクト指向はプログラムを非常にコンパクトにまとめる能力を持っています。「同じコードは2度書くな」、「if文は使うな」、ともかぶりますが、機能の実装は必ずどこか一箇所にする、また実装位置はできるだけ継承元クラスにする、そのためにメソッドの機能はできるだけ単純なアイディアを1メソッドに1つだけ実装し、それらを積み木の様に組合せてより高度なアイディアを実現する。(その場合も1メソッドに1アイディアだけ)もし2箇所に同じようなコードがあったとすれば、それはその部分を1メソッドとして継承元クラスに実装できるはずです。この様にして、もう1行たりとも削れない、という所まで削ります。また複数の処理パスを用意しなくても済むよう、機能はできるだけ汎用的な仕様にする。そしてオブジェクト指向のキモとして、仕様の裏に隠れている真の姿を見極める事が大切だと思います。例えば、建物をモデリングしたいとして、壁クラス、窓クラスをその構成要素として考えたとします。でも実は壁も窓も、空気の透過率、光の透過率といったものをパラメータ化することによって1つのクラスと捉える事も出来ると思うのです。窓開けなど、特殊な機能が欲しくなった時、初めて継承クラスとして窓クラスを考えるべきです。この様な事をいつも心に留めているかいないかで、プログラムの量はそれこそ倍半分も違ってくると思うのです。

  2. 名前づけ命
    オブジェクト指向ではプログラムが隠蔽されているので、ともすると何をやっているのか分からなくなりがちです。そこで大切になるのがメソッドの名前です。例えばGetVolumeOfSpace()などと、英文法を遵守して、プログラム全体が舌っ足らずな英文ドキュメントとして読めるくらいがいいと思います。メソッド内部で使う変数名も同様に、意味がクリアになるまで長い名前をつけた方がいいと思います。

  3. 「既存のプログラムに影響を与えるな」、というのは間違ってる
    メンテ作業の時、まことしやかに言われるこのセリフですが、私は間違っていると思います。既存のプログラムに影響を与えないために、例えばGetPrice()という、値段を取得するメソッドがあったとして、後でドル建ての値段が欲しくなった時、メソッドをコピーしてちょっとだけ変えてGetPriceDollar()などとしてしまいます。でもこんな事を続けていたら、あっという間にメンテ性能を食いつぶして1年もたったら何が何だか分からなくなってしまいます。このような時はGetPrice( enum currency )などとして、既存の呼び出し元も全てGetPrice( _YEN )に全置換すべきだと思います。新しい標語は、「既存のプログラムにいい影響を与えろ」、としたいのです。
HOME > ガイドライン

Copyright(C) Copyright DeepDigital Co.,Ltd. All Rights Reserved.