>>708
絶対的な回答はないんだけど、

(1)のパターンはいちばん多いと思う。SqlDataReaderのRead()なんかもこのパターンね。
(2)はちょっと厳しすぎると思う。特に、非メモリリソースが絡んだ場合、
きちんとfinallyの処理も必要になるし。
(3)はステータスが3つ以上あるなら、それなりに意味があると思う。DialogResultみたいな感じね。

事前チェックについては、Move()そのものが事前チェックになってるんじゃないかしら。
Move()してみる → trueなら値を取得 みたいな感じで。