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 : ........ } } }

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

フィールドをローカル変数に設定する場合には注意が必要です。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の使用