補完変数の命名に特定の規則を使用していますか?
-
03-07-2019 - |
質問
私は変数の相補的なペアに適切な名前を考え出すことがよくあります。ここで、2 つの変数は、対立する概念、ある種のデュオローグの 2 人の参加者などを示します。
これは、反例で説明するとわかりやすいかもしれません。私は、印刷広告の一部として 2 つのグラフィックを印刷するアプリを管理しています。それらはデータベースに次のように保存されます。 TopLogo
そして LowerLogo
, 、期待しているので、使用するたびに停止して再確認する必要があります top
補完する bottom
, 、 そして lower
補完する必要があります upper
.
うまく機能すると思われる明らかな例がいくつかあります。
client / server
source / target
データまたはファイルをある変数から別の変数にコピー/移動するため
minimum / maximum
しかし、そのようなきちんとした命名スキームに適さない概念がいくつかあります。たとえば、レコードをページングする場合、「最後」は「最終」を意味するのでしょうか、それとも「前」を意味しますか?最近、次のコードを使用しているのを見ました。 firstPage
, previousPage
, nextPage
そして finalPage
曖昧なことを避けるために lastPage
完全に、これは非常にビートだと思ったので、この質問をしました。
私たちと共有したい、特に素敵な変数名のペアはありますか?(同じ長さの場合はボーナスポイントが発生します。これにより、等幅フォントのコードが非常にきれいになります。)
解決
あらゆる種類のコードスタイル規則と同様に、一貫性はあなたが努力すべきものです。
開発チームに「標準」に同意してもらいます。 「送信元/宛先」などの一般的なシナリオのプレフィックスのペアまたは「from / to」そして、プロジェクト全体でそれらを使い続けます。すべての開発者がコードベース内の特定のプレフィックスの意味を認識している限り、誤解を避けるのは簡単です。
ルールの例外は、変数がパブリックAPIの一部である場合はドキュメントで、または可視性が単一のクラスまたはメソッドに制限されている場合はコード内のコメントで明確にする必要があります。
他のヒント
私のデータベースには、 start_date
と end_date
という名前の列のペアを含む多くの有効状態のテンポラル(" history")テーブルがあります。ボーナスポイントはありません。というのも、「開始」という文字数と同じ文字数の直観的な代替案を考え出すよりも、一般的に使用される「終了」を使用したいからです。
私はこれらの一般的な用語を好む傾向があります。 employee_hire_date
よりも employee_start_date
を好む(正式に雇用する以外の理由で雇用が始まった場合、たとえば会社が買収の対象となった場合)。そうは言っても、 person_start_date
よりも person_birth_date
を好むでしょう:)
明らかな場合には意味的に一貫性を持たせようとしますが、たとえば、最大値は最小値と一致し、「最小値」とは一致しませんが、よく構造化された OO コード (すべてのコードではないことはわかっています) では、問題は適切なコードで解決されます。 IDE。 クラスは短く、メソッドも短く、各メソッド内の変数は少数です。したがって、変数ペアが明確である限り、変数ペアを何と呼んでも問題ありません。コードはプロフェッショナルに見えないかもしれませんが、本当の品質はコードではなくコードにあります。 見て コードの。
適切な JavaDoc またはその他のドキュメント システムがあり、それに付随する適切なクラス名があれば、この問題はさらに解消されます。たとえば、 Connection
クラスがあり、それにはメソッドが呼び出されます setDestination
, それは問題ありませんが、setDestination が 1 つのパラメータを取ることがわかっている場合は、 destination
そしてそれは Server
クラス、あなたはかっこいいです...たとえそう呼びたかったとしても target
, aimHere
, placeToSendTheData
, 、 または whatever
(および対応する名前、 source
, comingFromHere
, 、 そして placeToGetTheDataFrom
)。さらに、ドキュメントシステムは次のように述べています それは何のためにあるのか, 、それはプライスレスです。
次のことはばかげているように聞こえるかもしれないし、StackOverflow ではきっと反対票を投じられると思いますが、専門家っぽくない独特の変数名には大きな利点があります。変数には次のような名前があることはわかっています placeWeWantTheDataToGo
(そして、IDE が入力を処理します) しかし、JDK を実行する「真面目な」人なら、 一度もない そのような愚かな名前を使用します。したがって、その変数が私のものであることがすぐにわかります。ちなみに、私がスペインとイタリアの開発者と仕事をしたとき、彼らはスペイン語の変数名を使用してコードを書きました (常にではありませんが、通常は)。これにより、同じ影響が生じます。すぐにわかります Conexion
クラスは私たちのものですが、 Connection
クラスはそうではありません。
[また、変数名を入力する代わりに、コード内のどこかに定数 String を割り当ててそれを使用します。そうすれば、たとえそれが low ではなく lower または downer と呼ばれていたとしても、まだ大丈夫です。
はい、対称性が明確になるように、変数の補完セットに体系的に名前を付けようとします。必ずしも簡単ではありません。時には不可能です。まあ、私が自分で決めたルールを使用することはできません-つまり、私は通常、同じ長さの名前を持つようにします。 「上」と「下」の例は、私を苦しめます(私はまだバティーではないと仮定しますが、これは確かではありません)。おそらく同じ長さなので、「上」と「下」を使用します。 「top」と「bottom」は長さの違いからも私をイライラさせます。