|
||||||||||||||||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||||||||||||||||
| if/whileの条件式で"="は利用しない(C_CTR003) | ||||||||||||||||||||||||||
|
ifとwhileの条件式の中では"="演算子を利用することができます。ただし基本的にはifあるいはwhileの条件内に"="演算子を使用するケースは、メソッドの返り値を代入するケース除いて、ほとんど考えられません。 多くの場合は"=="と間違えているか、あるいは条件文の外で行うべき代入を条件文内で行っているかのどちらかです。 "="を使用した良い例 |
||||||||||||||||||||||||||
FileInputStream fileInputStrm = new FileInputStream( FILEPATH );
|
||||||||||||||||||||||||||
|
上記の例では、ファイルの読み込みと同時にEOF(End of File)の検出を同時に行い(fileInputSteam.read()メソッドはEOFを検出すると"-1"を返します)、Whileのループ処理がEOFに達したらループを抜けるという処理をしています。 上記の例以外でも同様のことは実装できますが、ファイル読み込みの場合はこの方法がスマートといえるでしょう。 "="が誤って利用されている悪い例 |
||||||||||||||||||||||||||
//一見気がつきにくい
|
||||||||||||||||||||||||||
|
一方、上記の例ではif文の中で"="を使ってしまい、isChangeにtrueを代入してしまっています。その結果、上記ifの判定は常にtrueとなってしまい、バグの内包につながりかねません。 またif文での判定では、"if (isChange)"でtrueかfalseの判定が可能ですので、"isChange == true"や"isChange == false"といった書き方はすべきではありません(第5回:フォーマットに関するコーディング規約「boolean変数は既に比較済み(C_FMT014)」参照)。 なお、この規約はJava特有のものではありません。 |
||||||||||||||||||||||||||
| for文の使い分け(C_CTR004〜C_CTR006) | ||||||||||||||||||||||||||
|
forとwhileは同じことができますが、forとwhileの違いを意識して使うようにしてください。基本的に配列や数列を処理する場合やループ回数が明確なものに関してはfor文を使用してください。 for文の括弧の中は、カウンタの宣言、ループ条件、次のカウンタを求める式の3つの条件が記述されます。これらの条件が省略できる場合はwhileで書く方がよいでしょう。 簡単に特性をまとめますと表3のようになります。表3の特性を参考にして、whileとforの使い分けを意識するようにしてください。
表3:whileとforの違い なお、この規約はJava特有のものではありません。 |
||||||||||||||||||||||||||
| breakやcontinueは使わないほうがわかりやすい(C_CTR007) | ||||||||||||||||||||||||||
|
ループ内ではbreakやcontinueを利用して、処理を強制終了させたり、スキップさせたりすることが可能です。しかしループ内での処理の制御にbreakやcontinueを使用すると、制御構造が複雑になり可読性が低下してしまいます。 このようなロジックの大部分は、breakやcontinueを使用せずとも記述できる場合がほとんどです。 制御構造を単純にして可読性を向上させるために、breakやcontinueはできるだけ使用しないでください。 なお、この規約はJava特有のものではありません。 |
||||||||||||||||||||||||||
| 配列をコピーするときはSystem.arraycopy()メソッドを利用する(C_CTR008) | ||||||||||||||||||||||||||
|
System.arraycopy()は配列をコピーするためのメソッドとして用意されています。配列でコピー処理を自作すると、間違いを含んだり実行速度が低下したりすることがありますので、System.arraycopy()を使うようにしてください。 System.arraycopy()メソッドはネイティブコードにより実装されており、またコアパッケージで提供されているため、信頼性・パフォーマンスの点でも優れているといえます。 なお、この規約はJava特有ものになります。 |
||||||||||||||||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||


