1

さまざまなコーディング スタイルを見てきましたが、ここでは 2 つの大きなスタイルについてのみ説明します。次のように、一般的な意味で使用する場合は、クラス名のようにすべてに名前を付けるスタイルを使用します。

String str = "This is some text";

しかし、Java Practicesでは、Interfaces クラス名の前に「I」を付けたり、オブジェクト名の前に「f」または「a」を付けたりするスタイルを目にします。「JDialog または JFrame をサブクラス化しないでください」からこのスニペットを取得します。

/**
  Constructor.

  <P>Called when adding a new {@link Movie}.
*/
MovieView(JFrame aParent) {
    fEdit = Edit.ADD;
    buildGui(aParent, "Add Movie");
    fStandardDialog.display();
}

なぜプログラマーはこのスタイルでコーディングするのでしょうか? 使っている人も多いのでは?また、プロのプログラマーはこのスタイルを使用しますか?

前もって感謝します :)

4

6 に答える 6

3

これは私の個人的な意見です。

インターフェイスでプレフィックスを使用しないことを好みます(またはそれ以外のもの)。私はそれをそのまま呼びたいだけです。インターフェイスは、オブジェクト (またはその一部) を表すことを目的としており、実際の実装に影響を与えることはありません。

Car インターフェースがあるとします。そして、AudiA4 はその車の実装になる可能性があります。新しい Audi A4 を購入したばかりの場合、購入した車の種類を気にしていると思われる人に、「新しい Audi A4 を購入しました」と言うでしょう。他の人には、「私は新しい車を買いました」と言うことができます。確かに、新しい IAudiA4 や新しい ICar を購入したとは決して言いません。

このJFrame命名は、これが Swing Frame であり、Swing が AWT (元の Java ウィンドウ ツールキットであり、既に Frame クラスを持っていた) の後に来たためです。AWT と Swing の両方が同時に使用できるため、「J」接頭辞を使用してツールキットを区別しました (JFrame は Frame を拡張することに注意してください)。彼らはそれを SwingFrame と呼ぶこともできましたが、'J' 接頭辞は明らかに Swing パッケージを表すのに適切な選択でした。したがって、基本的に、このプレフィックスは単なる命名の選択であり、インターフェイスの「I」に似た規則ではありません (または実装の Impl サフィックスも時々見られます)。

私のポイントは、クラスとインターフェースが何を表しているかに従って、常にクラスとインターフェースに名前を付ける必要があるということです。それ以上でもそれ以下でもありません。CarImpl クラスを持つ意味はありません。それが実装であることを誰が気にしますか。どの実装ですか?なぜ独自のクラスが必要なのですか?CarImpl を使用すると、さらに何が得られますか? CarImpl2 と呼ぶ 2 つ目の実装を作成するとどうなりますか? これらはすべて非常に制約的であり、あまり価値がありません。

それを何と呼んでください。それが私が定めた唯一のルールです。

以上のことから、Eclipse プロジェクトは、他の多くのプロジェクトの中でも、実際に I-for インターフェイス表記 ( WIKI ) を使用しています。しかし、それは彼らの選択です。プロも使っているのを見たことがあります。私はそれが好きではありませんが、一般的に言えば、チームの命名規則を尊重します。

于 2012-08-04T19:51:18.763 に答える
1

コード スタイルは、開発者がお互いのコードを読みやすく理解しやすくするのに役立ちます。Java の規則では、短くてわかりやすい識別子の使用が規定されていますが、残念ながら、短くてわかりやすい識別子を常に一緒に実現できるとは限らないため、明確にするためにatmosPres短くする必要があるかもしれ atmosphericPressureません。atmATM を知っていますよね?, ap- WTF?

C# でプログラムを開発しているときに、変数名に 3 文字の型識別子をプレフィックスとして付ける慣行に初めて遭遇しました。これにより、変数の宣言を探すことなく、変数に含まれるデータ型を読者が知ることができます (メモリ不足または怠惰のため?)。 )。配列には、他のデータ型と区別するために、 Iegという接頭辞も付けられます (目的はわかりませんが)。IList

私にとって、最悪のコード規則は C++ にあります (実際に存在する場合)。データ型と変数の大文字と小文字の型が混在し、競合するメソッドと関数の命名スタイルと無限の不可解な省略形があり、これらすべてが非言語化を困難にしています。 C++コードを読んで理解するための通常のC++コーダー。

于 2012-08-04T20:57:24.690 に答える
1

そのようなことについての本があります-Steve McConnellによるCode Complete

于 2012-08-04T19:50:24.947 に答える
1

私が間違っているかもしれませんが、Java 変数に名前を付けるときに見た唯一の普遍的な規則は、名前の形式に関するキャメルケース表記を使用することです。

名前自体に関しては、実際の変数に応じて変数に名前を付けることが常に有用であることがわかりました。あなたのString例では、これは汎用変数になると述べていますが、次のようなより意味のある名前を付けます。

String message = "This is some text";

または:

String msg = "This is some text";

私が見たソース コードの Java ライブラリの中には、変数に名前を付けるときに非常に冗長になる傾向があるものもあれば、変数が縮小されたコンテキストで使用されるときに 1 文字の名前を使用するものもあります。

public Rectangle setLocation(Point p) {
    return setLocation(p.x(), p.y());
}

変数に名前を付けるときの主な目標(またはそれ以外のもの)は、常に、あなたがやろうとしていたことの意図を可能な限り最良の方法で伝えることだと思います.

于 2012-08-04T20:00:08.410 に答える
1

あなたが説明しているものは、「ハンガリー表記法」と呼ばれることもありますが、本当の意味での「ハンガリー語」ではありません。

基本的に、インスタンス変数、ローカル変数、パラメーターなど、さまざまなクラスの変数を区別するという考え方です。これには、次の 2 つの基本的な目的があります。

  1. たとえば、(「記述的な」変数命名を使用して) インスタンス変数ralphsLeftFootとローカル変数が自然に存在する可能性がある場合、名前の衝突を回避するのに役立ちますralphsLeftFoot。接頭辞を使用すると、2 つを共存させることができます。特に、ローカル変数が (警告メッセージなしで) インスタンス変数を「隠す」可能性がある言語では、そのような衝突によるセマンティクスの意図しない変更を防ぎます。
  2. 変数のスコープが明確になるため、メンテナンス中に、ローカル変数にインスタンス スコープがあると誤って想定したり、その逆を想定したりすることはありません。

このアプローチは価値がありますか? 多くの開発者はスキームのサブセットを使用しており、明らかに効果的です。たとえば、Objective-C 開発者の多くは、インスタンス変数の名前を「_」文字で始まる「プロパティ」の後ろに付けて、2 つを明確に区別し、プロパティが意図されたときにインスタンス変数を誤って使用しないようにします。

同様に、多くの言語の多くの開発者は、インスタンス変数の前に文字 (多くの場合 "m") を付けて、"通常の" ローカル/パラメーター変数と区別しています。

おそらく最も重要なことは、あなた (およびあなたのチーム) が好きなスタイルを選び、それに固執することです。チームがプレフィックスを気に入った場合は、プレフィックスを使用してください。チームが他の何かを好む場合は、それを使い続けてください。もちろん、より良い選択が「明らかに」なったときに設定を変更することは問題ありませんが、むやみに行ったり来たりしないでください。

于 2012-08-04T20:08:12.193 に答える
-1

さまざまなコーディング スタイルを見てきましたが、ここでは 2 つの大きなスタイルについてのみ説明します。次のように、一般的な意味で使用する場合は、クラス名のようにすべてに名前を付けるスタイルを使用します。

String str = "これはテキストです";

それはひどいです。誰かがあなたのコードを読んで、それが何をしているのかを理解しようとしていて、 という名前の変数に出くわしたと想像してくださいstr。このコードを読まなければならない人には、あなたの意図について何の意味もありません。

慣例は、読みやすさを向上させ、ソフトウェアの全体的な品質を向上させるために、人々によって、また人々のために使用されます。規則がなければ、複数の開発者がいるプロジェクトは、コードの可読性を損なうだけのさまざまなスタイルに悩まされます。専門家が何をしているのか知りたい場合は、インターネットでさまざまな慣習を調べてください。

于 2012-08-04T19:48:39.813 に答える