cockscomblog?

cockscomb on hatena blog

Android Studio便利テク #3 — メソッドをグルーピングする

Javaでクラスの実装を進めていくと、あるメソッドが継承元クラスのメソッドをオーバーライドしているのか、あるいは何らかのinterfaceの実装なのか、だんだん見分けがつかなくなります。一定の規則でメソッドを並べたり様々な工夫があることと思います。


Xcodepragma mark

#pragma mark - UITableViewDelegate

iOSアプリ開発に慣れていれば、上記のような#pragma markを残しておく習慣があることでしょう。ちなみにSwiftでは以下のようになります。

// MARK: - UITableViewDelegate

region

Android Studioにはpragma markとは少し違いますが、regionというコメントの書き方があります。

    //region GoogleApiClient.ConnectionCallbacks
    @Override
    public void onConnected(Bundle bundle) {
        connectLocationService();
    }

    @Override
    public void onConnectionSuspended(int i) {
        disconnectLocationService();
    }
    //endregion

上記のように//region//endregionの間に囲まれた範囲を、任意の名前で定義することができます。この例であれば、二つのメソッドGoogleApiClient.ConnectionCallbacksインターフェースの実装であることが明白です。

f:id:cockscomb:20140813230713p:plain
Surround Withで選択範囲を囲う

f:id:cockscomb:20140813230732p:plain
//regionコメントで囲まれている

またこのregionの範囲はフォールディングできます。

f:id:cockscomb:20140813230747p:plain
region部分がフォールディングされている

ちなみに//regionの書き方はVisual Studio風ですが、NetBeans<editor-fold desc="GoogleApiClient.ConnectionCallbacks">``</editor-fold>という書き方もできます。


本質的には、クラスにメソッドが増え過ぎて迷子になるようなら、役割が広すぎるクラスになってしまっているのかもしれません。そのような場合でもコメントなどによって適切なグルーピングが行われていれば、リファクタリングの助けになるでしょう。いずれにせよ、読みやすくコードを整理することはよい習慣です。

プロの力が身につく Androidプログラミングの教科書

プロの力が身につく Androidプログラミングの教科書