-4

Javaで考えている優れたプログラミング手法は何ですか?

私がこの質問をする理由:

私はいつも間違ったやり方をしているのではないかと思っているので、良い習慣についてもっと知りたいです。

私がいつも混乱していることの1つ:

this.xxxローカル変数と区別するために、インスタンス変数を参照するために常に使用する必要がありますか?

4

5 に答える 5

2

「優れたコーディング慣行」を見るにはいくつかの方法があります

  • エラーが発生しにくく、新しいエラーの発生を防ぐコーディングスタイル/イディオムにより、「正しい」コードになります
  • 他の人が読みやすく、維持しやすいコーイングスタイル/イディオム

最初のケースでは、プログラマーは特定のスタイルを採用して、コードに侵入する可能性のある「偶発的な」エラーの発生を防ぎます。

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」として直接参照するよりもわずかに優れています。

于 2012-12-01T10:40:28.887 に答える
0

一般的なコーディング規約については、これは良い本です:Javaスタイルの要素http://www.ambysoft.com/books/elementsJavaStyle.html

于 2012-12-01T14:01:47.033 に答える
0

私の推奨は、this潜在的なあいまいさを解決するのに役立つときはいつでも使用することです。 this.同じ名前のローカルメソッドパラメータではなく、メンバー変数を使用する必要がある場合に必要です。

使用状況は次のようになります。

public class ravi {

    public int x;
    public static float y;    

    public float getX(int x) {
        return this.x;
    }
于 2012-12-01T10:24:51.387 に答える
0

this.xxx質問に関する限り、そうです、それが差別化の1つの方法です。もう1つの方法は、ローカル変数の前に「p」を付けて、それがメソッドパラメータであることを示すことです。これにより、次のような結果が得られます。

public void setField(Field pField) {
    field = pField; // instead of this.field = field, assuming field was the method argument.
}
于 2012-12-01T10:25:53.137 に答える
0

クラスメンバーとまったく同じスペルのパラメーター名を選択した場合にのみ、コンストラクターと代入用のセッター関数で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を作成するかどうかよりもはるかに重要な決定に遭遇します。クラス。

于 2012-12-01T14:09:50.450 に答える