C#と言う言語は、型セーフな言語です。
なので、常に型を意識して書く必要があると思っていたのですが、
暗黙的型付け
を使うようになってからは、少し考え方が変わってきました。
例えば、以下の3つのコードは、同じ処理をします。
double amount = this.GetAmount();
this.SetAmount(amount);
var amount = this.GetAmount();
this.SetAmount(amount);
this.SetAmount(this.GetAmount());
1番目のコードは、amount 変数は double 型であることがわかります。
また、GetAmount() メソッドは、double 型の値を返すことや、SetAmount() メソッドの引数が double であることは、このコードを読むだけでわかります。
2番目のコードでは、Amount の型はわかりません。
ですから、GetAmoun() メソッドが返す型や、SetAmount() メソッドの引数の型が何であるのかは、このコードを読んでもわかりません。
しかし、GetAmount() の戻り値の型が、SetAmount() の引数の型に対してキャストの不要な型であることはわかります。
3番目のコードは、変数を介さずに同じ処理を行っています。
GetAmount() の戻り値の型が、SetAmount() の引数の型に対してキャストの不要な型であることがわかる点は2番目のコードと同様です。
この3つのコードを見て、3番目のコードが有用な記法だと思う人は、2番目の書き方も許容できることになるのではないかと思っています。
理由は、2番目と3番目のコードは GetAmount() の戻り値の型や、SetAmount() の引数の型を明示していない点で共通しているからです。
同時に、3番目のコードを純粋に変数を介するやり方に置き換えるなら、1番目よりも2番目のコードの方が近しい置き換えと言えるのではないかと思います。
しかし、3つのコードで共通して言えることは、GetAmount() の戻り値と SetAmount() の引数の型を調べてから記述しなければならないということです。
結局、どのような書き方を用いたとしても、型セーフであるという考え方に基づいていることは間違いないということなのでしょうね。