CodeCoachフィールド・アドバイス

適切なアクセス修飾子を選択して、フィールドの効率を高めることができます。さらに、フィールドをローカルにすることで、コードの実行も改善できます。未使用のフィールドを削除すると、パフォーマンスはさらに向上します。CodeCoachは、これらの各改善についてアドバイスを提供します。

CodeCoachから提供されるフィールド・アドバイスには、次の4種類があります。

static finalとできる可能性のあるフィールド
常に同じ定数で初期化され、変化しないフィールドは、static finalに宣言できます。フィールドをstatic finalに設定すれば、オブジェクト・サイズを縮小でき、メモリーを節約する可能性が高くなります。コードを拡張し、フィールドの値を変更する場合や、フィールドを異なる値に初期化する場合、static finalに設定しないでください。

static finalフィールドのアドバイスのキーワードは、FSTAおよびFFINです。

ローカルとできる可能性のあるフィールド
複数のメソッドに使用されるが、使用前に必ず初期化されるフィールドの場合、対応するメソッドでローカル変数に置き換える必要があります。こうすることで領域が節約され、ローカル変数へのアクセスの方がフィールドへのアクセスより速いため、パフォーマンスは向上します。

たとえば、次のコードについて考えてみます。


class foo { private int i; void method1() { for (i = 0;i < 10;i++) { // do some stuff } } void method2() { i = bar(); switch (i) { case 1 : ........ } } }

method1およびmethod2のどちらの場合も、メソッドで使用される前に変数が初期化されるため、フィールドiは、どちらのメソッドでもローカル・フィールドとして宣言する必要があります。

フィールドをローカル変数に設定する際には注意してください。CodeCoachが、誤って次のコードでの変更もアドバイスするためです。


class foo extends Thread { private boolean active; void dostuff() { active = true; while (active) { // do something } } void stopit() { active = false; } }

dostuffメソッドは、activeフィールドがfalseに設定されている場合にのみ終了するよう設計されています。stopitメソッドは、別のスレッドで使用するために設計されており、activeフィールドをfalseに設定し、その結果dostuffメソッドの実行を停止します。 activeがローカル変数に変更された場合は、意図したとおりに機能しなくなります。

ローカルとできる可能性のあるフィールドのアドバイスのキーワードはFLOCです。

privateとできる可能性のあるフィールド
属するクラスでのみ使用されるフィールドには、privateを宣言できます。フィールドをprivateに設定しても、必ずしもコードが効率的に実行されるとはかぎりませんが、メンテナンスは容易になります。コードを拡張し、このフィールドを属するクラス以外で使用する場合は、privateに設定しないでください。

privateとできる可能性のあるフィールドのアドバイスのキーワードはFPRIです。

未使用である可能性のあるフィールド
コンパイラは、通常、使用されていないフィールドを検出します。CodeCoachは、コンパイラが読み取らない未使用フィールドがないか調べます。今後そのフィールドを使用することを考えている場合は、削除しないでください。

未使用である可能性のあるフィールドのアドバイスのキーワードはFUNUです。


CodeCoachを使用したコード品質の改善
CodeCoachアドバイス・タイプを使用可または使用不可に設定
CodeCoachアドバイス・レベルの設定
コマンドラインからのCodeCoachの使用

 

Copyright © 1997, 2004, Oracle. All rights reserved.