「Java・インデントについて」 半角スペース?タブ?どっち

book

「読みやすいコードを書く」という事は思っていたよりも大事な事のようです。確かにビジネスとして複数人とプログラムを作っているという場合は大事な要素なのでしょう。読みにくいコードであればある程迷惑をかけるというのもあるでしょうし。

ただ筆者のようにプログラミングを習得中の身だと一人でコードを書いているというだけなのでそれ程までに気に掛ける事もないかもしれません。でもクラスが増えてきたりコード量が増えれば増える程、読みやすいコードと読みにくいコードでは時間的なロスの差が生じてきます。後々アプリを制作していく予定というならなおさらでしょう。

今回はそんな「読みやすいコードを書く」という事について考えてみました。

SPONSORED LINK

photo by Dorine Ruter

▼この記事の目次

  1. インデントとは?
  2. インデントのルールに従って書く
  3. この記事のまとめ

インデントとは?

まずインデントです。いわゆる字下げですね。文章を書く時にもする事ですが、先頭の文字列 (文章) を右にずらすというものです。
英単語のindentの意味を調べると「ギザギザを付ける (ノコギリのような) 、くぼみを付ける」 との事。それを文章に当てはめてなんとなくそんなニュアンスという事ですね。

「読みやすいコードを書く」には色々な要素がありますがパッと見一番影響すると思われるのはインデントでしょう。読みにくいというより、読みやすいという方がいいですからね。

「Tab」か「半角スペース」どっち?

ネット上では「Tab」によってスペースを空けるのか、「半角スペース」によってスペースを空けるのか度々議論されているのだとか。実はスペースを全く空けなくてもこのように動作は問題なくします。

code

ただしコード量が多いとわけがわからないものになってしまいますよね。なのでスペースを空ける必要はあるようです。

「Tab」と「半角スペース」の違いというのは、「Tab」はエディタの環境によって「4つ分の半角スペースだったり、8つ分の半角スペースだったり」と左右されてしまうという事です。Windowsに標準搭載されているメモ帳を使う場合は、デフォルトで8文字文の半角スペースになっています。8文字文半角スペースだとやや多すぎる感があります。

さらにここが一人の開発だと問題ないのですが、複数人での開発となると「Tab」なのか「半角スペース」なのかを統一しないと色々問題だったりもするようです。
こんな「Tab」ですが、変更する方法があるので試しにやってみましょう。

エディタにまずは「Tab」を入力します。「Ctrl」+「H」のショートカットキーでこの画面が表示されるので、検索する文字列にコピーしてきた「Tab」を貼りつけて置換後の文字列のところに2文字半角スペースなり・4文字半角スペースなり入力して「すべて置換」を選択します。

▼とりあえず4文字半角スペースにしました

code2

この方法で確認してみましたが、筆者はとりあえず今後は「半角スペース」にする事にしました。なぜかというと既に入力済みの「Tab」が変換されるだけで、これから入力する「Tab」には設定した4文字分半角スペースが適用されなかったからです。
なのでこの方法を使用する時はコードを全て書き終えてから「Tab」内部の8文字分半角スペースを一括で変換するという事になりそうです。今回は標準搭載のメモ帳で確認したので、プログラム向けのエディタなどであれば設定できるものもあると思います。メモ帳であれば「半角スペース」を使うしかないかもしれません。

インデントのルールに従って書く

rules

肝心な「インデントをどのようにして使うのか?」という部分にふれてみたいと思います。一応ルールはあるようなのでそちらに従ってみましょう。

インデントする時のルール

  • 「;」「{」「}」と書いたら改行する
  • 行の開始位置は前の行と同じ位置からにする
  • 「{」「}」の中では行の始点を一段深くする (4文字分半角スペース)
  • 「}」と書いたら一段浅くする (4文字分半角スペース)

上のルールに従い以前書いたコードを修正してみました。

▼インデント修正前

import javax.swing.*;

class Wind{
        public static void main(String args[]){
        JFrame frame = new JFrame("ウィンドウを表示");
        frame.setSize(420,280);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);

        JButton button = new JButton("OK");
        frame.add(button);

        frame.setVisible(true);
        }
}

▼インデント修正後

import javax.swing.*;

class Wind{
    public static void main(String args[]){
        JFrame frame = new JFrame("ウィンドウを表示");
        frame.setSize(420,280);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        JButton button = new JButton("OK");
        frame.add(button);
        frame.setVisible(true);
    }
}

元々「;」「{」「}」でなんとなく改行してインデントには「Tab」を使っていたので、大きくは変わらないですが少し見やすくなったような気がします。「こんなルールもある」と明確にわかっていれば「動作は問題ないしなんとなくこうだろうな」で今まで書いていたものよりもは断然良いかもしれません。

▼インデント修正後 -その②-

class test{
    public static void main(String args[]){
        System.out.println("mainメソッド");
        hoge();
        hoge();
    }
    public static void hoge(){
        System.out.println("ほげ");
    }
}

こっちの例も見やすく・・

って、単なるメモ帳なので断然見やすくなったというわけではないと思いますが「{」と「}」で囲まれたブロックの見分けが付きやすくなるという事ですね。下から2つ手前の「}」でメソッドのブロックを閉じて、一番下の「}」でクラスのブロックを閉じています。

一つ目のインデントは「半角スペース」×4、一段深くなった二つ目のインデントは8文字文半角スペースなので「Tab」×1と使い分けれるのもいいかもしれません。ちなみに全角スペースだとエラーになってしまうので気を付けましょう。

この記事のまとめ

もっと見やすくしたいならプラットフォームであるエディタをプログラム向けエディタに変えるというのも手かもしれません。メモ帳の環境に限界を感じたら何か良いエディタを探そうかと思います。また、開発環境なら設定をいじるという方法もあると思います。

関連記事




この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitterでめちゃログをフォローしよう!