16bit!

エンジニアじゃなくなっちゃった人が何かを書くブログ

【Java】Javaコーディング規約2004 個人的メモ その1

ちょっと年度が古いですが、Javaコーディング規約2004を読んだので、
個人的に気になった点をいくつかメモとしてまとめておこうと思います。

【追記】
割と長くなったので、記事を3つに分けました。

その2、その3はこちらからどうぞ。

【Java】Javaコーディング規約2004 個人的メモ その2
【Java】Javaコーディング規約2004 個人的メモ その3

__________________________________________________


N_CLS004 能力付加型のインターフェース名は最後に”able”をつける

クラスに対して何らかの能力を付与するようなインターフェースの名前は、"~able"に統一しましょうという話。
確かにインターフェースはただでさえ追いづらいソースになりやすいので、命名の統一は大事ですね。


N_MTD003 オブジェクトを生成するメソッド名は「"create"+オブジェクト名」にする

自分もそうなのですが、わりと"make~"と命名しがちかなと思います。
また、自分の経験上だと、"make~"の場合、
メソッド内でオブジェクトの生成以外に他のことまでやっているケースが多いです。
"make"を使いたくなる場合はこのように単純な生成以外に他のことまでやっているケースが多そうなので、
その場合はメソッドの構成を見直した上で、"create~"にリネームできるようリファクタリングした方が良さそう。


N_MTD004 変換メソッド名は「"to"+オブジェクト名」にする

自分はオブジェクトクラスそのものに変換メソッドを準備せず、
それを扱うクラスに"convertAtoB"みたいな名前で実装してしまうことが時々ありました。
オブジェクトクラス自体に実装されている方が分かりやすいので、これもリファクタリング対象。


C_GNR002 使われないコードは書かない

当然のことだと思うのですが、意外と残っていることが多いです。
「//現在は使われていない」とかいうコメントとともに残しておくくらいなら消してくれ。


C_GNR004 final を適切に利用する

定数にはちゃんとfinalを付けているのに、クラスやメソッドにはfinalが付いていないことが多い気がします。
(メソッドやクラスにもfinal修飾詞は付けられます)
特に抽象クラスの上書き(オーバーライド)されたくないメソッド等に付けておくと可読性も安全性もあがるので、
オーバーライドさせたくないメソッドにはfinalをつけましょう。


C_FMT015 不等号の向きは左向き("<"、"<=")にする

規約にも例外として軽く書いてありますが、個人的にはこれは必ずしもそうとは限らないとかと。
メソッド的に主語となる方の変数があると思うので、
その場合はその変数を左に持ってきた方が可読性は高いかと思います。

if( a < i ){
 
}else if( a > i){ // aがこの分岐の主役となるような変数の場合は、常に左側でもOK

}else{ 

} 


C_MTD003 public メソッドはクラスの整合性を壊さないような設計を

特に1人で実装している場合なんかに、割とできていないクラスがある気がします。
「このメソッドが呼ばれるのはあのメソッドが呼ばれる後だから、大丈夫だ問題ない」みたいなケース。
クラス内部の整合性を呼び出す側が意識しなくてはいけないような構造はやめましょう。

__________________________________________________

とりあえずその1はここまでです。


その2はこちら
その3はこちら