今回は「必ずやりたい処理はfinallyを使う」というお話をしていきたいと思います。
1.1 GOOD:必ずやりたい処理はfinallyを使う
前述のように,「都合の悪いケースではすぐに抜ける」場合など,すぐに抜けるのは良いのですが,毎回最後にログを書きたい等,必ずやりたい処理がある場合があります。そういった場合は,finallyを使用してください。
//GOOD:必ずやりたい処理はfinallyを使う private bool 必ずやりたい処理はfinallyを使う(Product product) { Console.WriteLine("in"); try { if (product == null) { return false; } if (product.ProductName == null) { return false; } if (product.ProductName.Length <= 3) { return false; } return product.ProductName.Substring(2, 1) == "A"; } finally { Console.WriteLine("out..."); } }
これはリーダブルコードというよりは,ただのC#の仕様ですが,最後に何かやりたいことがあるという理由で,すぐに抜ける書き方ではなく,一度変数に退避して,最後にリターンするという記述をする場合もあるかもしれないので,そういった場合も,finallyを使えば,すぐに抜けるパターンでも,必ずやりたい処理を通せますよというお話です。やり方は,tryキーワードで囲って,最後にfinallyキーワードですね。try{}の中で何が起きようとfinallyを通るので,どの条件にヒットしようとやりたいことや,最後にログを記述するような場合に使えます。要するに,早々にreturnする書き方をしながら,必ずやりたいことも書くことができるということです。そういった場合は,finallyを検討してみてください。