ときどき「きれいですね」って言われることがあリます。
Qiitaなので、もちろん容姿のことではなく、ソースコードのことです。
お世辞でもそう言ってもらえるのは嬉しいので、普段どんなことを気をつけているか書いておく事にしました。なお、Code Completeとかに書いてあるような一般的なことは、書いても面白くないので省略してます :-P
そもそも書かない
自分が使っている言語やフレームワークの機能をしっかりと理解して、車輪の再発明をしないように心がけています。例えば、Pythonでループ処理でループのインデックス値も使いたい場合。例えばこんなソースコードを書いてみます。
names = ['Alice', 'Bob', 'Charlie']
index = 0
for name in names:
print (index, name)
index += 1
でも、実はPythonにはループ時に要素だけでなくカウンタも取得できるenumerate
があります。
names = ['Alice', 'Bob', 'Charlie']
for index, name in enumerate(names):
print (index, name)
この例のように、自分が使っている言語やフレームワークにどんな機能があるのかを、常に好奇心を持って探すようにしています。
改行やスペースに注意を払う
インデントを揃えるのはもちろんなのですが、スペースや改行にも注意を払います。意味のない2文字以上のスペースや2行以上の改行は使わないようにしています。余分なスペースや改行は、ソースコードフォーマッターも積極的にはきれいにしてくれません。
public class Person { /* ← 中括弧の前が意味なく2文字スペース */
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
/* ← 意味なく2行以上の改行 */
}
画面は小さめ、フォントは大きめ
ときどき若い人で、巨大なモニターに小さな文字でコーディングをしている人を見ます。そんな見晴らしのいい環境だと、ちょっとやそっとのサイズではメソッドを分割しようというモチベーションがわかないので、ノートパソコンオンリーで作業しています。
名前を可能な限り短くする
変な略語にならないレベルで、変数名やメソッド名を短くする。特に意味の重複などには気をつける。
public class Player {
private int playerId
public void setPlayerId(int playerId) {
this.playerId = playerId;
}
public int getPlayerId() {
return playerId
}
}
このクラスだと、player用のものであることは明白なので、その辺を短くして見ます。
でも、Playerクラスの中に入っているので、idだけで意味は通じますよね、多分。
public class Player {
private int id
public void setId(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
}
ゴミ掃除をする
使われなくなったライブラリー、呼ばれなくなったメソッド、参照されなくなった変数などは、気がついたら消すようにしています。IDEのサポートもありますが、メソッド呼び出される可能性があるかどうかについて調べるには、そのメソッドをコメントアウトしてコンパイルしてみるとわかります(ただしリフレクションで呼ばれることを除く)。
神は細部に宿る
最後ですが、神は細部に宿ります。こう言った日々の活動の積み重ねが、コードをきれいにするコツかなと思いました。まる。