エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

操作の横恋慕

仕事をしていて、こういうコードをしばしば目にしてます。

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に対する操作
    }
};

その理由を説明するのが、意外と厄介。なんでオブジェクト指向で作るか、という話までいってしまいそうで。そういう話をするのは、わたしは好きなんですが、いかんせん時間がない。なにかうまく説明する方法が、欲しい。