山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

オブジェクト指向の弱点

新たにオブジェクト指向の弱点を発見しました。


データとデータの取り扱いをひとまとめにする

というのがオブジェクト指向です。

「データ」というのはインスタンス変数にあたります。

そのためオブジェクト指向では基本的にはインスタンス変数を

使うことが前提になります。


しかしローカル変数に比べるとインスタンス変数は扱いが

難しいところがあります。

メソッドを作るとき、インスタンス変数がその前にどういう

状態になっているか、あらゆる状態を想定しなければなりません。

メソッドの終了後についても考慮しないといけないかもしれません。

考慮がもれると障害になる可能性があります。

メソッドの引数でローカル変数としてわたってくれば

そのへんは考慮する必要がありません。

またマルチスレッドの対応も難しくなります。


だからといってインスタンス変数をなくすとプログラムが

手続きのみになってしまいます。

(こういう作り方する人が非常に多い・・・)

手続きだけになるとクラスは処理の集合体みたいになり

何を表しているものなのかわからなくなります。

どういう単位でクラスにまとめるかもわからなくなるし

独立して使いまわせるパーツにもなりにくくなり、

結果としていろんなところにロジックが重複しがちです。


このへんの弱点をうまく解消するやり方を考えたいです。

インスタンス変数の状態を限定して、

テストで網羅的にカバーできるようになるような

イメージでしょうか。