Headline About TechLog Download Java VBA Link


June 15, 2007. Friday.

Javaの格言:名は体を表す

public void reqCnctSndCls(String req) {}

つっこみどころ満載だな、と思ったあなたは「権利は義務の元に」をちゃんと理解してくれたのですね。思わなかった方は、続きの前にコーディング規約をもう一度読んでみて下さい。きっと無駄にはならないはず。


規約に「単語を略すな」という決まりがある。上記の例だとcnctという部分はconnectなんだかconcatなんだかconcertなんだかconcentrateなんだかさっぱり判らないからである。略さず書くならこれは以下のようになる。

public void requestConnectSendClose(String request) {}

これで安心した人、もう少し頑張りましょう。規約に、「変数は名詞、メソッドは動詞になるよう命名すること」ってのがありますね。上記を直訳すると「要求接続送信切断」と何をするメソッドなのか意味が判らない。接続して要求を送信、その後切断という意味にするのなら、以下のようになるのでしょうか?

public void connectAndSendRequestAndClose(String request) {}

んな馬鹿みたいに長い名前のメソッドが作れるか!と叫んだあなたは正しい。だからってreqCnctSndCls(String req)が良いわけではない。じゃあ、どうするのかというと、実は簡単。以下のように書くだけで良いのです。

private void connect() {}
private void send(String request) {}
private void close() {}

public void order(String request) {
  connect();
  send(request);
  close();
}

よくメソッド名が長くなることを理由に単語を略したがる人がいますが、それは考え方が逆です。単語を略さない事を基本にしておけば、「メソッド名が長すぎる!」⇒「機能を詰め込みすぎかな?多機能メソッドは良くないから分割しよう」と、結果的にメンテナンス性・再利用性が向上します。これが正しい考え方。命名則を意識するだけで設計まで改善するのです。