Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

Milkのメモ帳

【Android Studio】コーデイングスタイルの調整


こんにちは、基本的にVisual Studio使いのMilkです。

というより、これに慣れすぎたために、他の統合開発環境が分かりません。一種の病気です(笑)


さて、Android Studioを使い始めたのですが、あれこれと使い勝手が難しい。

コーディングする上で、いつもの手の動きにしっくりこないとコーディング効率がガッツリ下がります。

また、コーディングスタイルも言語によってちょいちょい違います。

所謂、字下げスタイル問題(宗教戦争の域に発展するプログラマのパンドラの箱)

字下げスタイルって何?

コーディングする上で、ソースコードを見やすくするために段々に行を書くのです。

どこで区切って段々を組むか。それが字下げ。

また、字下げスタイルは色々な派閥があって、プログラマは各々好きなスタイルがあるのだ。


では、敢えてここで宣言しよう!

私は、BSD/オールマンスタイル支持者だと!!
(いやーん。Javaの人々に袋叩きにあうwww)

K&Rスタイル? 私は全然慣れない・・・

というより、これで書かれるとソースコードの可読速度が半減する。

どこからどこまでがひとつの塊なのかが理解できない。もう、理由はそれだけ。

ほんとそれだけ・・・

では、ここでちょっとだけ例を上げましょう。

K&Rスタイル

public class WeatherApi{
    private static final String API_ENDPOINT
            = "http://weather.livedoor.com/forecast/webservice/json/v1?city=";

    public static String getWeather(String cityId) throws IOException{
        URL uri = new URL(API_ENDPOINT + cityId);
        HttpURLConnection connection = (HttpURLConnection) uri.openConnection();

        StringBuilder sb = new StringBuilder();

        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            String line;
            while ((line = br.readLine()) != null){
                sb.append(line);
            }
        }finally{
            connection.disconnect();
        }

        return sb.toString();
    }
}


とくに、tryの箇所を見てほしい。私はもうこの時点でダメ。try{がどこで閉じているのか分からなくなるのです。

参考書片手に、あれこれ打ち込んで・・・あれ?括弧の数が合わないぞ??どこ?どこよwww

って大混乱。

さらに、他人のソースだともうパニック。うへぁ・・・助けてくだしぁ・・・全部括弧を直してもいい??って言うぐらいである。
(プログラマ失格・・orz)

BSD/オールマンスタイル

public class WeatherApi
{
    private static final String API_ENDPOINT
            = "http://weather.livedoor.com/forecast/webservice/json/v1?city=";

    public static String getWeather(String cityId) throws IOException
    {
        URL uri = new URL(API_ENDPOINT + cityId);
        HttpURLConnection connection = (HttpURLConnection) uri.openConnection();

        StringBuilder sb = new StringBuilder();

        try
        {
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

            String line;
            while ((line = br.readLine()) != null)
            {
                sb.append(line);
            }
        }
        finally
        {
            connection.disconnect();
        }

        return sb.toString();
    }
}

私みたいな、初心者プログラマはこの形のほうが嬉しい。なんでって?そりゃー{ }が縦にそろってるからさ。

それがひとつの塊だってのが、ひと目で分かる。確かに行数が多くなるのは難点だけど、初心者にはそんなことより分かりやすさだ。

あと、読みやすいってのは後でメンテナンスがしやすいってこと。凝った作りにされた後、いざ保守するぞって時に「うわぉ・・・なんて書いてあるのか分からんぞ・・・どこにバグが入ってんだ?」となる。

まぁ、これは字下げスタイルだけの問題じゃないけど。


でもね。これは人それぞれのコーディングスタイルなので、争っちゃだめだぞ☆

鶏卵問題と同じで、絶対に結論出ないから。


という訳で、何がしたいかというと、Android StudioはJavaですので、基本的にK&Rスタイルなんです。だからそれをBSD/オールマンスタイルにしたい!ってことなんです。(あぁ〜、またJavaの人々に怒られるww)

字下げスタイルの設定

Android Studioは以下の場所で字下げスタイルを変更できます。

「File」-「Settings...」を選択します。

すると以下のような画面が出てくるはずです。

f:id:maxminkun:20160530173833p:plain

「Editor」-「Code Style」-「Java」と選んでいきましょう。すると、「Wrapping and Braces」というタブがあるはずです。

ここが、コーディングのスタイルを選択できる項目です。チェックボックスを押してみたり、コンボボックスを選択してみよう。すると、右側のコーディング例が変更されるはずだ。

詳しい設定項目内容は以下のサイトにまとめられていました。(ありがとうございます。)

gihyo.jp


因みに、私が設定した項目は以下の項目

  • Braces placement - in class declaration → Nextline
  • Braces placement - in method declaration → Nextline
  • Braces placement - Other → Nextline
  • if()' statement always - 'else' on new line → check
  • 'try' statement - catch on new line → check
  • 'try' statement - finally on new line → check

あと「Blank Lines」のタブを修正

  • Keep Maximum Blank Lines - in declarations: → 1
  • Keep Maximum Blank Lines - in code: → 1
  • Keep Maximum Blank Lines - Before'}' → 0

すると、空行を調整できる。

さて、ここまでやってどんな意味があるかだけど、Android Studioにはコードを自動調整(書いた後に整えてくれる)機能があるのだ。

今度は「Keymap」の項目を選択してください。

こんな画面が出てくるはず。

f:id:maxminkun:20160530175427p:plain

検索で「Reformat Code」と打ち込もう。すると、Ctrl+Alt+L のショートカットが割り当ててある機能がある。

でも、これって例えばUbuntuの場合は画面ロックのショートカットと被っているので使えないんです。

なので、これに新しいショートカットを追加します。

該当の項目をダブルクリック。すると「Add Keyboard Shortcut」と出てきます。

これを選択すると以下のような画面が出てくるはずです。

f:id:maxminkun:20160530175846p:plain

「First Stroke」となっている箇所にカーソルを当てて、自分の割り当てたいショートカットキーを押下します。

私の場合はF10にしました。

因みに、他のショートカットと被っているとConflictsに赤文字で警告が出ますよ。


これまでできれば、後は好きにコードを書きまくって、汚くなっても「Reformat Code」機能を使っちゃいましょう。

便利、べんりー。

やっと、これで楽にコーディング出来るようになりました。

それでは!adios!!