/note/social

クラスの機能が雑多すぎるのではという話題

コードがオブジェクト指向かどうかは重要ではないという話...より

コードがオブジェクト指向かどうかは重要ではないという話。

これを読んで最近行ったリファクタリングを思い出しました。

FooLoader のようなクラスがあり、GetXXX()、GetYYY() といったメソッドが定義されている。が、よくみると、FooLoader は特に意味のある状態を保持しているわけではなく、その状態を取り払うと状態のないクラスになってしまった。

結局、FooLoaderというクラスを持つ意味がなくなったので、クラスを取り除き、GetXXX()、GetYYY() という関数を直接提供することでコードが簡単になった。

ただの関数を提供してくれればいいのに、なんでオブジェクトを作る必要があるんだ、と思うときはときどきあるかなと。

初期のC++など昔のクラス系OOPが、名前空間の機能もクロージャの機能(永続的レキシカルスコープ)の機能もクラスに担わせちゃったために、単に機能をひとつの名前空間にまとめておきたいとかでも何でもかんでもクラス、っていう慣習が広まっちゃったのかもしれないなと思うこともあります。

Shiro Kawai

それらがそれぞれ別個の機能として提供される言語はあるのだろうか。