拡張性/柔軟性を獲得する章

3.8. 改行コード

『目的』

移植性を考慮して改行コードの扱いに注意しましょう。

『Before』

改行コードとして”\n”または”\r”をハードコーディングすることは好ましくありません。 改行コードはプラットフォームによってが異なります。 プラットフォームに依存するソースコードになってしまいますね。 (Windowsでは「\r\n」、UNIXでは「\n」、Macでは「\n\r」が改行として振る舞われます。)

改行コードをハードコーディングするとこうなります。

// 改行を文字列に含める
StringBuffer str = new StringBuffer();
str.append("Hello");
str.append("\n");
str.append(name);

"一行目\n二行目\n三行目"

別のプラットフォームにおいては正しく動作しないかもしれません。

『After』

改行コードをハードコーディングしないようにします。

// 改行を文字列に含める
StringBuffer str = new StringBuffer();
str.append("Hello");
// プラットフォームに適した改行コードを取得\
str.append(System.getProperty("line.separator"));
str.append(name);

private static final String BR = System.getProperty("line.separator");
String s = "一行目" + BR + "二行目" + BR + "三行目";

StringWriter buffer = new StringWriter();
PrintWriter pw = new PrintWriter(buffer);
pw.println("1行目");
pw.println("2行目");
pw.print("3行目");
String s = buffer.toString();

どのプラットフォームにおいても適切な改行コードが取得できるため移植が容易になります。 Write Once Run Anyware の一端です。

『まとめ』

改行コードはハードコーディングしないこと。
改行コードが欲しければSystem.getProperty(“line.separator”)を使うこと。

< 前のページへ
お問い合わせ
  • ようかん
  • SG Labs(エスジー ラボ)
  • ITERACY
  • RiceLog(ライスログ)
  • Salesforce導入コンサルティング
  • SES営業向け用語講座

Pagetop