TOP設計・移行・活用> 日付
Javaコーディング規約
Javaコーディング規約

第8回:文字操作・数値・日付に関するコーディング規約
著者: 電通国際情報サービス
高安 厚思、東田 健宏、青木 応樹   2005/11/15
前のページ  1  2  3  4
日付

   日付のインスタンスには数種類ありますが、状況に合わせて最適なインスタンスを使うようにしてください。
日付を表す配列には、longの配列を利用する(C_DATE001)

   Date型のインスタンスは多くのリソースを消費します。パフォーマンスを考慮をして、日付をあらわすのにはlong型を使用します。

   ただし、日付を1つ保持する場合は、Date型とlong型のパフォーマンスの差はそれほど大きくないため、Date型を使用しても問題ありません。一方、配列を使って複数の日付を保持する場合はパフォーマンスの差が顕著にあらわれますので、long型を使用してください。

   なお、Date型からlong型への変換は、DateクラスのgetTime()メソッドを使用します。

Calendar now = Calendar.getInstance();
Date date = now.getTime();
Long time = date.getTime();
   得られたlong型は、1970年1月1日 0時0分0秒 GMTからのミリ秒数で日付をあらわしています。

   一方、long型からDate型を取得するには、次のように、CalendarオブジェクトにsetTimeInMillis(long)メソッドで時刻を指定した後に、getTime()メソッドを使用します。

long time = ~;

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);
Date date = cal.getTime();
まとめ

   今回は「文字操作・数値・日付」に関するコーディング規約について説明してきました。

   文字操作・数値・日付の規約に違反したコードは、潜在的なバグ・リソース浪費・パフォーマンス悪化などを引き起こします。これらはテストの過程で明るみにでてこない場合があり、結果として気付かないまま開発・テストフェーズを終えてしまいかねません。

   開発・テストフェーズでこれらの問題が発見されなかった場合、リリース後に本番障害として検出され、ユーザに多大な迷惑をかけてしまいます。加えて、本番リリース済みのモジュールを修正する際には開発時より更に注意を払う必要があり、思い切った修正を行うにはリスクを伴います。

   これらの問題を回避するためには、「文字操作・数値・日付」の規約に違反しないコードを書く、または問題を検出できるようなテストを実施する必要があります。しかし、これらの規約に違反したコードは、状況によっては正しく動作することがあるため、誤りを検出するテストを考えるのは容易ではありません。

   以上のことから、今回の規約に違反しないコードを書くことが重要ですが、ただ単に気をつけるのではなく、次の3つのポイントに注意してコーディングをすると良いでしょう。

  • 文字列の比較・更新・他の型への変換
  • 数値を扱う際は精度に注意
  • 日付を扱う場合はパフォーマンスを考慮

表4:文字操作・数値・日付を使う時の注意点

   これら3つのポイントに留意し、潜在的なバグ・リソース浪費・パフォーマンス悪化などといった、発見しにくい問題を内包しないコードを書くことを目指してください。

前のページ  1  2  3  4


株式会社電通国際情報サービス 開発技術センター 高安 厚思
著者プロフィール
株式会社電通国際情報サービス  高安 厚思
株式会社電通国際情報サービス 開発技術センター
Java(J2EE)/オブジェクト指向の研究開発やプロジェクト支援、開発コンサルティングに従事。モデル、アーキテクチャ、プロセスが探求対象。今回は Javaコーディング規約2004の仕掛け人。


株式会社電通国際情報サービス 開発技術センター 東田 健宏
著者プロフィール
株式会社電通国際情報サービス  東田 健宏
株式会社電通国際情報サービス 開発技術センター
CTI、Webアプリの開発経験を経て、現在は主にプロジェクトマネジメント支援、プロセスエンジニアリング、ソフトウェア工学研究開発に従事。最近はコーチング、ファシリテーションといったヒューマン系スキルに興味を持ち日々修得に努めている。


株式会社電通国際情報サービス 青木応樹
著者プロフィール
株式会社電通国際情報サービス  青木 応樹
株式会社電通国際情報サービス アウトソーシング事業部所属
主にJavaを用いたシステム開発に従事。最近は設計・マネジメントスキルの習得に励んでいます。


INDEX
第8回:文字操作・数値・日付に関するコーディング規約
  はじめに
  文字列リテラルはnewしない(C_STR002)
  数値
日付