Javaの個人的読みやすいコードフォーマット
個人的読みやすいコードフォーマット【Java版】
このサイトがわかりやすく、見やすいかと思いました。
↑のページにかかれていること以外で、自分なりに気をつけていることをまとめます。
変数の定義時には型を省略しない
int val1 = 1, val2 = 2;
ではなく、型を付けて宣言する。
int val1 = 1; int val2 = 2;
ifの括弧と中括弧について
if(val==1) { // } else { // }
ではなく、↓のように書く
if (val == 1) { // } else { // }
for
for(int i=0; i<2; i++) { // }
ではなく、↓のように書く。(=,<等の前後にスペースを入れています)
for (int i = 0; i < 2; i++) { // }
builder
SampleModel model = new SampleModel.builder() .val1(1) .val2(2) .build();
SampleModel model = new SampleModel.builder()
でbuilderを使ってインスタンスを生成することを表す。
↓の例のように、builder()
で改行すると、SampleModel model = new SampleModel
で何をするのか分かりづらい。
(次の行を読んで、builderと初めて分かるため)
SampleModel model = new SampleModel .builder() .val1(1) .build();
コメントの内容について
コメントは、その処理で何をやっているかではなく、どのような処理をしているのかを書く。
if (val == 1) { // valが1の場合の処理 }
ではなく、↓のように書く。
if (val == 1) { // valが1の場合、〇〇の処理を行う } if (!result) { // 前処理で〇〇かXXの処理が失敗している場合 }
このようにすれば、コメント部分をヒントに後続処理を読むことができる。
1行に書きすぎない
sampleModel.setVal(Integer.parseInt(sameModel.getVal()));
Integer sameModelVal = Integer.parseInt(sameModel.getVal()); sampleModel.setVal(sameModelVal);
デバッグする場合、2つの処理に分けたほうがやりやすいと考えているからです。
空行はインデントを入れる
if (true) { int a = 1; // このような空行にはインデントを入れる. int b = 2; }
class Sample() { public void method1() { // } // こことか public void method2() { // } }
インデントを入れなかった場合は、何か処理を入れようとした場合にタブを打つことになる。
とても面倒というわけでも無いけど、コーディング時に気をつけれるところなので気をつける。
タブはスペース4にする
タブでもいいんじゃない?と思う人がいると思うけど、環境によってタブがスペースに変えられたり、タブ1がスペース8で表示されることがある。
そうすると、とても読みづらい。
かなり読みづらい。
gitのcommit時に無駄なdiffが発生したりもする。
スペース2にすると、インデントでの区切りが分かりづらく、どこからどこまでがforのブロックなのかなど分かりづらい。
個人的にはスペース4が良いと考えています。
同じ行にコメントを書く場合
int val = 1; // hoge
スペース2つ開けて//
を入れる。
そのあとにスペース1つ入れて、コメント本文を書く。
これはpythonのコメント方法を参考にしました。
省略名を使う場合は必ずコメントを入れる
int mkdir = "mkdir"; // make directory /** name converter. nをXXに変換する * @param nm * n: name. 名前 */ public void nmConv(String n) { // }
省略しなければならない場合は無いと思いますが、省略する場合は必ずコメントを入れる。
後で見たときや、別の人が読んだときに必ずわからなくなるから。
どのように利用するフィールドなのかコメントする
例えば↓のようなModelクラスでid
とnumber
というフィールドがあるとします。
class SampleModel() { private String id; private String number; }
このクラスだけではidとnumberがどのように使われるのかわかりません。
つまり、このクラスを使用してgetId()
と書くのか、getNumber()
と書くのかわからないのです。
ですが、それぞれにコメントがついていれば判断ができるというわけです。