基本的にはケースバイケースなんでしょう。その依存性がどの程度単体テスト容易性を阻害するかによって、その依存性を排除するためのコストをどれだけかけてよいのかが決まる、と。
でもね。だとすると、ケースバイケースでべったり依存だったりそうでなかったり、まちまちになるってことでしょ。それでいいのかな?後で読むときに混乱しないか?と思ってしまうけど。
これは、必要になるまでやるな、のAgileの教えがまだ分かってないからなのかな。
いずれにせよ、徹底して依存性を排除すべき状況になったときの備えとして、そういうコードが書ける練習をしておく必要もあるのかな、ということでして。
以下はメモ。いつか整理します。
- C++だとコラボレーターはテンプレートで指定するという手もある
- インジェクションじゃなくて、グローバル変数経由でファクトリーオブジェクトへアクセスする(テスト時には差し替える)という手もあるか
- グローバル変数というのがイヤ...
- でも、C++ならありかも
- DIコンテナなんてないし
- ターゲットは純粋な(クラスメンバーでない)関数という場合もあり得るし
- あーやっぱりよくわからん