そういえばRSpecではインスタンス変数使ってるのほとんど見かけたことないなと思ったことがきっかけで調べた。
その中でももっともらしいなと感じた理由のみ抜粋。
##インスタンス変数よりletを使う理由
(詳しいことは参考記事に)
- typoにすぐ気づける
letはtypoした場合undefined local variable or method
のエラーがでる。
インスタンス変数の場合nil
と評価されるため、インスタンス変数をtypoしたことにすぐには気づけない可能性がある。
####ちなみに
let! は即時にデータ作成される。
let は呼ばれて初めてデータ作成される。(遅延評価)
テストによって意図的にletを使って、呼ばれるまでデータ作成を行わない遅延評価を使うほうがいい場合もある。
「let!とletは使い分けずに、**let!**のみを使用したほうがよい」みたいな意見も見たことがあるけど、
脳死せずにそのときは何がベストなのかを考えて使い分けたい。
##参考