Programming

オブジェクト指向について思う事②

こちらは、前回の続きです。

私は勤めている時、新規のシステムを構築といった仕事よりも、フェイズ2から入って既存のシステムを改変していく仕事の方が多かったです。ある時はこんなソースに出くわしました。ある機能のソースコードを追っていくと、「いったい何処まで深堀りするの?」と、呼んでも呼んでも更に下のクラスの関数が呼ばれるからくり箱のようなソースです。やっと業務ロジックに到達したと思ったら全然関係ないところに飛んでいたり、ほんとにこれはどうしようかと思いました。このプロジェクトはフェイズ2でかなりの改変をする為、作り直していいということで、全部作り変えちゃいました。そうした方が数倍速かったです。またある時は、オブジェクト指向型プログラミングと言いながら、1つの関数が数千行に及ぶソースコードに会いました。でも、こっちの方が追えます。上から順に見ていけばいいだけですから。

あと、このようなクラス構成のソースコードにも会いました。Webシステムのバックエンド側の業務ロジックなのですが、「A、B、C、D」という業務ロジックのクラスがあり、各クラスがある処理をする時にお互いのクラスの関数を呼び合っているというものです。

正確には、Aクラスの関数はCやDクラスの関数も呼んでいますが、複雑になるのでイメージとしてこんな感じで。このソースコードは綺麗なので、これらのクラス群を改変してフェイズ2の作業をしていましたが、でもこれはやっちゃダメです。私がオブジェクト指向について一番言いたいことは、 「オブジェクト指向とはお友達同士のサークル活動ではなく徹底した序列社会であるべき」 という事です。お友達同士のサークル活動ではオブジェクト指向最大の利点、カプセル化を成しえる事が出来ません。これらのクラスは下記のようにすべきです。

上司であるクラスMが「A、B、C、D」クラスを管理し各クラスの関数を呼びます。それぞれのクラスはお互いに干渉せず黙々と上司に呼ばれた時だけ自分の仕事をこなします。オブジェクト指向とは組織であり会社です。あともう一回書きます。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP