4

私はしばしば、補完的な変数のペアに適切な名前を付けようとしています。ここで、2 つの変数は対立する概念を表し、2 人の参加者はある種のデュオローグなどを表します。

これは、反例によってよりよく説明されるかもしれません - 私は、印刷広告の一部として 2 つのグラフィックスを印刷するアプリを維持しています。TopLogoそれらはおよびとしてデータベースに保存されます。これらLowerLogoを使用するたびに停止して再確認するtop必要がbottomあります。lowerupper

私がうまくいくと思う明白な例がいくつかあります:

client / server
source / targetデータまたはファイルをある変数から別の変数にコピー/移動するため
minimum / maximum

しかし、そのようなきちんとした命名スキームには向いていない概念がいくつかあります。たとえば、レコードをページングする場合、'last' は 'final' または 'previous' を意味しますか? 私は最近、あいまいさを完全に回避するためにfirstPage, previousPage,nextPageを使用するコードを見ました。finalPagelastPage

私たちと共有したい、特にきちんとした変数名のペアはありますか? (それらが同じ長さである場合はボーナス ポイントです。これにより、等幅フォントでコードが非常にきれいになります。)

4

4 に答える 4

3

あらゆる種類のコード スタイル規則と同様に、一貫性を保つために努力する必要があります。

開発チームに、「ソース/宛先」または「送信元/送信先」などの一般的なシナリオの「標準」のプレフィックスのペアに同意してもらい、プロジェクト全体でそれらに固執してもらいます。すべての開発者がコードベースの特定のプレフィックスの意味を認識している限り、誤解を避けるのは簡単です。

ルールの例外は、変数がパブリック API の一部である場合はドキュメントで、または可視性が単一のクラスまたはメソッドに制限されている場合はコード内のコメントで明確にする必要があります。

于 2008-10-20T13:42:09.380 に答える
1

私のデータベースには、 と という名前の列のペアを含む、有効な状態のテンポラル (「履歴」) テーブルが多数ありstart_dateますend_date。私にとってボーナスポイントはありません。なぜなら、「開始」という単語と同じ数の文字で直感的な代替案を考え出すよりも、一般的に使用される「終了」を使用したいからです。

私はこれらの一般的な用語を好む傾向がありますが、よりコンテキスト固有の用語が実行可能である場合でも、優先する傾向がありますemployee_start_date(employee_hire_date正式な雇用以外の理由で雇用が開始された場合、たとえば、会社が買収の対象であった場合)。そうは言っても、私はそれを好むでしょperson_birth_dateperson_start_date:)

于 2008-10-20T14:04:32.690 に答える
1

明らかなケースでは意味的に一貫性を保とうとしますが (たとえば、最大値は「最小値」ではなく最小値と一致します)、適切に構造化された OO コード (すべてのコードではないことはわかっています) では、問題は適切なコードで消えます。 IDE。クラスは短く、メソッドは短く、各メソッドには変数がほとんどありません。したがって、変数のペアが明確である限り、変数のペアを何と呼ぶか​​は問題ではありません。コードはプロフェッショナルに見えないかもしれませんが、真の品質はコードの外観ではなく、コードにあります。

優れた JavaDoc やドキュメンテーション システムがあれば、問題はさらに解消されます。たとえば、クラスのインスタンスがありConnection、それが というメソッドを持っている場合、それはsetDestination問題ありませんが、 setDestination が呼び出された 1 つのパラメーターを取りdestination、それがServerクラスのものであることがわかっている場合は、クールです... targetaimHereplaceToSendTheData、またはwhatever(および対応する名前 、sourcecomingFromHereおよび)と呼ぶことを好みplaceToGetTheDataFromます。さらに、ドキュメントシステムは、その目的が何であるかを示しており、それは貴重です.

この次のことはばかげているように聞こえるかもしれませんし、ここで StackOverflow で投票されると確信していますが、専門的ではない独自の変数名には大きな利点がplaceWeWantTheDataToGoあります。それ)、しかし、JDK を行う「真面目な」人は、そのようなばかげた名前を決して使用しません。したがって、変数が私のものであることがすぐにわかります。ちなみに、私がスペインとイタリアの開発者と一緒に仕事をしたとき、彼らはスペイン語の変数名でコードを書きました (いつもではありませんが、通常)。Conexionこれは同じ効果を引き起こします:クラスが私たちのものであることがすぐにわかりますが、Connectionクラスはそうではありません.

[また、変数名を入力する代わりに、コードのどこかに定数文字列を割り当ててそれを使用します。したがって、low ではなく、lower または downer と呼ばれても問題ありません。]

于 2008-10-18T23:35:47.463 に答える
0

はい、対称性が明確になるように、変数の補完的なセットに体系的に名前を付けようとしています。それは必ずしも容易ではありません。時々、不可能ですらあります。まあ、私が独自に定めたルールを使用することは不可能です。つまり、私は通常、名前を同じ長さにしようとします。「上」と「下」の例は、私をバテに駆り立てます(私がまだバチではないことを前提としていますが、これは確実ではありません)。「上」と「下」は同じ長さなので、おそらく使用します。'top' と 'bottom' は、長さの違いのため、私もイライラします。

于 2008-10-18T23:09:50.013 に答える