優れたプログラムとは (3)

コラム

○再利用と保守性の関係

 継承は非常に高い再利用性を持つ反面、スーパークラスへの依存度が高くなればなるほどそこへの修正コストが高くなるという欠点があります。低階層に位置するこれらの要素は、プログラムの大部分に影響を及ぼす可能性があるため、実際の現場においては後から修正を加えることが困難になる場合があります。したがってこれらの低階層部は修正の頻度を大きく下げる必要があり、そのためにも初期設計が非常に重要になってくると私は考えます。そして、あまりにも手を加える頻度が高まった場合には、思い切ってこれらを捨てる(再利用をあきらめて新たに作る)べきではないかとさえ私は思います。

 優秀なプログラマにありがちな話ですが、オブジェクト指向のこういった特徴に固執するあまり、逆にプログラムを複雑にし、保守性を落としてしまうケースをこれまで幾度となく見てきました。見極めが難しいところだとは思いますが、保守工程が長期に渡るような場合には、こうした「再利用あきらめ分岐点」なるものを意識し、来るべき時にはそれを実施する勇気を持つべきではないでしょうか。

○低階層部の設計

 修正コストの観点から、低階層部は初期設計が非常に重要であると述べました。このため低階層部の設計は、仕様変更に耐えうるようなるべく汎用的に行うのが通常だと思います。しかしあまりにも汎化が進んでしまうと、そのモジュールの可読性やアクセシビリティは恐ろしく低下してしまいます。設計者は可能な限り汎化を押さえなければなりませんが、これには想定されないデータの種類・範囲や拡張可能性の排除が必要です。これはソフトウェアが対象とする実際の業務をある程度熟知していないとできないことであり、そういう意味ではこれらの設計は本来(プログラムに精通している前提で)上流従事者がやるべきものだと私は考えます。もしあなたが優れたプログラムを生み出す優秀なプログラマを目指すのであれば、このような上流工程と重なるスキルの習得も必要となってくるでしょう。


参考: 優れたプログラムとは (1)
参考: 優れたプログラムとは (2)
参考: 優れたプログラムとは (終)

コメント