C#リーダブルコード #14_必ずやりたい処理はfinallyを使う

当サイトではアフィリエイト広告を利用しています。

リーダブルコード
Subway Station in Munich, Germany. Train coming in. Strong Motion Blur on Train and People, no recognizable Persons.

今回は「必ずやりたい処理は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を検討してみてください。