Javaで考えている優れたプログラミング手法は何ですか?
私がこの質問をする理由:
私はいつも間違ったやり方をしているのではないかと思っているので、良い習慣についてもっと知りたいです。
私がいつも混乱していることの1つ:
this.xxx
ローカル変数と区別するために、インスタンス変数を参照するために常に使用する必要がありますか?
Javaで考えている優れたプログラミング手法は何ですか?
私がこの質問をする理由:
私はいつも間違ったやり方をしているのではないかと思っているので、良い習慣についてもっと知りたいです。
私がいつも混乱していることの1つ:
this.xxx
ローカル変数と区別するために、インスタンス変数を参照するために常に使用する必要がありますか?
「優れたコーディング慣行」を見るにはいくつかの方法があります
最初のケースでは、プログラマーは特定のスタイルを採用して、コードに侵入する可能性のある「偶発的な」エラーの発生を防ぎます。
Cの例の場合、次のコードは有効です(ただし、微妙なバグがあります)
if (x = 1) // always evaluates to 'true' (programmer meant '==', not '=')
{
// do something
}
したがって、コンパイラにこのエラーをキャッチさせるために、次のようなスタイルを採用できます。
if (1 == x) // if you accidentally typed '1 = x' the compiler will flag an error
{
// do something
}
このようなスタイル/イディオムは「グッド」プラクティスと見なされており、 「Clean Code:A Handbook of Agile Software Craftsmanship(RobertC.Martin」 」などの本でJavaに見られるものがかなりあります。
2番目のケースに関しては、「this.xxx 」と書くと、コードのリーダーがローカル/インスタンス変数を区別できるため、コードの可読性の精神から、変数を「xxx」として直接参照するよりもわずかに優れています。
一般的なコーディング規約については、これは良い本です:Javaスタイルの要素http://www.ambysoft.com/books/elementsJavaStyle.html
私の推奨は、this
潜在的なあいまいさを解決するのに役立つときはいつでも使用することです。
this.
同じ名前のローカルメソッドパラメータではなく、メンバー変数を使用する必要がある場合に必要です。
使用状況は次のようになります。
public class ravi {
public int x;
public static float y;
public float getX(int x) {
return this.x;
}
this.xxx
質問に関する限り、そうです、それが差別化の1つの方法です。もう1つの方法は、ローカル変数の前に「p」を付けて、それがメソッドパラメータであることを示すことです。これにより、次のような結果が得られます。
public void setField(Field pField) {
field = pField; // instead of this.field = field, assuming field was the method argument.
}
クラスメンバーとまったく同じスペルのパラメーター名を選択した場合にのみ、コンストラクターと代入用のセッター関数でthis.xxを使用します。例えば:
public void setName(String name)
{
this.name = name;
}
これは、クラスの名前メンバーをパラメーター名と区別するためです。
クラス内では、this.xxxを記述しないでください(構文的には正しいですが)。特に、その値を取得するだけの場合はそうです。たとえば、以下は「醜い」です。
public String getFullName()
{
return this.firstName + " " + this.lastName;
}
firstName + ""+lastName;を返すだけです。それは少ない書き込みです。
インライン関数を使用するか、クラスの個別の関数として使用するか、クラスが「a」か「has」かなど、this.xxxを作成するかどうかよりもはるかに重要な決定に遭遇します。クラス。