コレクション vs 配列 (2)

リストや配列などのシーケンスのデータを関数で受け渡す場合、関数の引数と戻り値の型をどうすべきかという問題で、今のところ以下のように落ち着いた。また考え方変わるかも。

  • 配列は暗黙で、IListになってくれるので、配列を受け取る実装を用意する必要ない。コレクションの事だけ考えれば良い。
  • 基本的に受ける側をよりベース型とすべき。つまり、関数の引数は受ける取るので、より抽象的に。戻り値は与えるので、より具体的に。


理由として、例えば戻り値でIListを返してしまうと、利用者側で、例えばListのAddRange()メソッドを使いたい場合にキャストの必要が発生する。Listを返しておけば、利用者側で調整可能。また、引数で抽象的にする理由は、広い範囲の型のオブジェクトをキャストや変換なしで、そのまま渡せるようになるので。