Kotlin の高階関数で関数の入退場をロギングする

Kotlin で Androidアプリを開発しています。Kotlin の高階関数が楽しかったので関数の入退場をログ出力するロガーを作成しました。
下記のような出力をするやつです。

コード

まずは Logger の方のコードから。 trace 関数以外は Android の Log をラップするだけのクラスです。

呼び出し側の方では以下のようにして使います。

Logger#trace でラムダ式で関数本体の処理を渡します。関数本体実行前に start、関数本体実行後に end のログが出るようになります。

ポイントとしては trace 関数を inline で宣言していることです。これにより、下記のようにラムダ式内で return を書くことができ、この場合は Logger#trace の呼び出し元からの return を意味することになります(大域脱出)。このように return した場合や例外が発生した場合でも finally ブロックにより関数の end のログがでます。

良い感じに使えそうですね。欠点は、ラムダ式で囲むので一段右寄りになるところでしょうか。全ての関数で使う必要はないですが、気になる主要な関数には入れておくと、何か起きた時のデバッグに役立ちそうです。

さいごに

Kotlin 楽しいです。iOSで Objective-C から Swift に移行したときも気持ちよくコードが書けるようになったのを覚えていますが、Android も Java ではなく Kotlin の方が書きやすいですね。
これからも Kotlin でまた発見があれば書いていきます。

本記事のコード、ちょっと整理してライブラリ化しました。


最後まで読んでいただきありがとうございます。 このブログを「いいな」と感じていただけましたら、Twiter にてフォローいただけるとうれしいです。ブログ更新情報などもお届けします。



この記事をシェアする




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA