罪作りなref/out

今日も今更な話。
ある設計書を見ていて思ったんですけど、.NETのref/outって罪作りなところがあると思ってみたり(´・ω・`)


参照を引数として渡すことが必須かと言えば、P/Invoke以外では必須では無いと思うんですけど。


それ以外の用途としては、2つ以上の値を返したい時に使われたりするんですが、これをやってしまうと分かりにくい設計になってしまうわけで(´Д`)
関連するデータはまとめて扱うべきだということで、単純な例としては、xとyを返したかったらPointクラス(構造体)にすべきでしょうという話ですけど。


Javaみたいにref/outなんてものがなければ自然とそういう発想になるわけすが、.NETだとref/outが使えることによって、安易にこうした設計が行われてしまうという所が罪かなぁと思ったりして。


これもまたレベルの低い話だなぁ…(´・ω・`)