ズンドコキヨシ with 日本語JavaでJavaで日本語を使ったのですが,そういやどこまで日本語でできるのかあんまり考えた事が無かったので調べてみました.
日本語が使える場所
package jp.shinido.qiita.日本語;
public class 日本語クラス {
private int 整数;
private double 小数;
enum 列挙型 {
その1,
その2,
その3;
}
public @interface 日本語入り {
}
@日本語入り
public 日本語クラス(){
整数 = 1;
小数 = 0.1;
}
public int 整数の取得(){
return 整数;
}
public static void main(String[] args) {
日本語クラス インプリ = new 日本語クラス();
System.out.println(インプリ.整数の取得());
}
}
- パッケージ名
- パッケージ名に日本語が使えます.当然ですがディレクトリ名も日本語になります.
- クラス名
- クラス名に日本語が使えます.ファイル名も日本語になります.
- 変数名
- 変数名に日本語が使えます.
- Enum
- 列挙型のEnumに日本語が使えます.enum名,値それぞれで日本語を使うことができます.
- メソッド名
- メソッド名に日本語が使えます.日本語クラス名の場合はコンストラクタも日本語にする必要があります.
- アノテーション
- アノテーション名に日本語が使えます.クラス名と同等なので当たり前ですが・・・.
日本語を使うメリット
- 日本人にとっては凄く分かり易いソースコードになる
- 異なるメソッドを呼び出すようなバグを引き起こしにくい
- 日本語を格納する変数名をいちいち考えなくて良い
日本語を使うデメリット
- 使用できる文字列には制限がある(記号,空白文字列,特殊文字は使えない)
- 入力時にIMEへの切替が必要
- IDEの補完機能が使いにくい(補完・候補列挙等はしてくれる)
- ディレクトリ名・ファイル名に使用した場合,異なるOS間での管理が複雑になる(MacでのUTF-8問題など)
- 日本語の読み書きができないと編集できない
ということで,圧倒的にデメリットが多くてあまり使う意味がありません.
特に「記号・特殊文字が使えない」という制限を今回初めて知ったので,実はズンドコキヨシでも「キ・ヨ・シ!」をそのままenumにすることはそもそもできないようです.(・,!は使えない)
エラーメッセージ・ログ等での使用
どうにか使えるような場所がないか1時間ほど考えたんですが,そもそも日本語が必要となる実装は入力・出力で日本語を使う場面しかありません.
特にエラーメッセージやログの出力で使用頻度が多そうなので,そういう場合に使ってみました.
public class JMain {
enum JLog {
引数が指定されていません,
整数値を指定してください;
}
public static final void error(JLog log){
System.err.println(log.name().toString());
System.exit(1);
}
public static void main(String[] args) {
if(args.length < 1){
error(JLog.引数が指定されていません);
}
int i = 0;
try {
i = Integer.parseInt(args[0]);
} catch(NumberFormatException e){
error(JLog.整数値を指定してください);
}
System.out.println(i);
}
}
enumにログメッセージを直接入力し,出力時はその値を直接指定します.
ソースコード中で何が出力されるのか一目瞭然であるために,ログ出力メッセージを間違えるようなバグは起きにくくなります.
ログメッセージにはM001みたいなIDを付けることも多いので,enumの先頭にM001_
のようなプレフィックスを付けるとIDEを使って入力するときに補完されるため便利かもしれません.
ということで正直あんまり使えないことが分かったんですが,どこかで使えそうなら使ってあげてください・・・.