2

Code Complete (Chapter 7, Section 3) は、良い関数はそれが返す値にちなんで命名されるべきであり、クラス内の適切な手続き名はそれが何をするかについて命名されるべきであると述べています.

Delphi(2009年より前)で同期メソッドを作成するとき、それらを使用してグローバル変数を設定する必要がある場合があります。これは一見悪いプログラミング手法ですが、変数を渡すことができないため、1回必要です。プロパティメソッドに使用するため、それらを「Get」または「Set」と呼びたくありません。

これらのより良い命名規則を持っている人はいますか?

4

6 に答える 6

3

プロパティメソッドに使用するため、それらを「Get」または「Set」と呼びたくありません。

それはかなり恣意的な決定のように思えます。「setAge」でも使用したため、「setName」で「set」を使用したくないと言うでしょうか?

そうは言っても、セッターで静的にすることは、文字通りパブリック グローバル変数 ALA Basic です。それがあなたの使命を達成する唯一の方法だと確信していますか?

静的が絶対に間違っていると言っているわけではありませんが、セッターを持つのではなく、それを定義するオブジェクトでそれを操作するために最善を尽くす必要があります。そうしないと、オブジェクトの内部状態の多くを公開するのが難しくなります制御する。

于 2009-04-21T22:14:36.960 に答える
1

プロパティの getter と setter には、 getsetで始まる名前はありません。これは、getter と setterの名前付けのために予約されている規則であるためです。それが彼らの仕事だから、彼らはそれらの名前を持っています。同期されたメソッドの目的は変数の値を設定することであるため、「設定」名を付けるのは完全に理にかなっています。

setとは異なるように、 assignまたはcopyなどの同義動詞を選択できますが、これらは、説明した目的のための型にはまらない名前です。の値を設定するルーチンがある場合、慣例により、関数に名前を付ける必要があります。最終的には、プロパティ アクセサーではないものに対してgetsetを使用することに関して抱えている問題を解決する必要があるだけだと思います。FooSetFoo

于 2009-04-22T04:10:08.150 に答える
1

Code Complete からのアドバイスは非常に強力であり、「プロパティ メソッドにそれらを使用しているため」というあなたの異議はかなり弱いと思います。とにかく、これらのプロパティ セッター/ゲッターはプライベートにする必要があります。これをオーバーロードの一種と考えて、それらを SetFoo および GetFoo と呼びます。

于 2009-04-21T23:03:09.353 に答える
0

これらのメソッドの動作に違いが見られないため、プライベート変数とグローバル変数にSetXXXandを使用します。GetXXX操作 toSetXXXは、データ領域に対するセットです。そのデータ領域がグローバル、ローカル、またはリモートの場合、それは外部から見えてはならないメソッドの内部の詳細です。

IDE は、そのデータ領域がローカルかどうかを知るのに役立ちますが、必要に応じて、それを示す簡単なコメント行を書くことができます。

于 2013-11-27T12:11:51.387 に答える