仕事をしていて、こういうコードをしばしば目にしてます。
class A { public: void doSomething() { doSomethingForB(b); } private: void doSomethingForB(B& b) { // Bに対する操作 } B b; };
「操作の横恋慕」ですね。
これを、こう書いたほうがよいよ、と説明したいのですが。
class A { public: void doSomething() { b.doSomething(); } private: B b; }; class B { public: void doSomething() { // Bに対する操作 } };
その理由を説明するのが、意外と厄介。なんでオブジェクト指向で作るか、という話までいってしまいそうで。そういう話をするのは、わたしは好きなんですが、いかんせん時間がない。なにかうまく説明する方法が、欲しい。