0

.NET ライブラリと多くのサードパーティ ライブラリでは、内部 (プライベート) メンバー値を変更する方法にいくつかの規則があることがわかります。それらはプロパティ (.NET プロパティ) またはメソッド (これらは Java で一般的に使用されます) をサポートします。セッターおよびゲッターとして)、またはプログラマーの場合はその両方。

いつ (そしてなぜ) プロパティ、メソッド、またはその両方を使用するのだろうか。たとえば、コントロールの可視性は、Visibleプロパティ (Windows フォーム内) を使用するか、メソッドShow()またはHide()を呼び出して変更できます。. メソッド(セッターなど)の呼び出しを介してのみ変更できる値がいくつかあります(内部/プライベート値があることは理解しています)。独自のコントロールやクラスを設計するとき、私はプロパティかメソッドを選択するのを少し躊躇します (または両方をサポートしますか?)。実際、どちらを選択しても問題ありません (Java はメソッドのみを使用する例です)。メソッドに対するプロパティの利点 (ゲッターやセッターとして) は知っていますが、そうであれば、場合によってはなぜメソッドを使用する必要があるのでしょうか。メソッドはプログラマーに提示されるか、プロパティを置き換えることさえあります。私はこれに少し混乱しています.私にとっては(私が言ったように)、メソッドのみを使用するときは問題ないと感じています(Javaで行うように、それほど悪くはありません:)。

私はあなたの経験と、これに関するあなたの慣例を知りたい. 私は、プログラミングの標準的な規則 (各プログラミング環境と各言語について) に従って、それらを区別するのが好きです。C# で C++ 命名規則 (PHP 命名規則でさえ?) を使用するなど、他のプログラマーには少し判読できない独自のスタイルを発明する人は好きではありませんか? 私には少し奇妙です、ごめんなさい。

共有してください、ありがとう...

4

2 に答える 2

5

メソッドに対するプロパティの利点 (ゲッターやセッターとして) は知っていますが、そうであれば、場合によってはなぜメソッドを使用する必要があるのでしょうか。メソッドはプログラマーに提示されるか、プロパティを置き換えることさえあります。

一般に、クラスを使用する場合、プロパティが「高速」で副作用がないことが期待されます。一方、メソッドは「何か」が起こることを示唆しています。

プロパティまたはメソッドに基づいて API を公開するかどうかを選択するとき、値/メソッド/etc が何を表しているかを調べようとします。それがvalueであり、直接返すことができる (またはほとんど副作用なしに非常に迅速に取得できる) 場合、プロパティはより理にかなっています。操作の場合は、メソッドの方が理にかなっています。

于 2013-04-17T16:06:23.270 に答える
4

例を挙げると、Visible プロパティを false に設定しても、すぐにコントロールが非表示になるわけではありません。プロパティにはコードが含まれていないか、コントロールを非表示にするコードが呼び出されていません。代わりに、コントロールの状態を変更して、後で (他のコードによって) 非表示にします。対照的に、Hide メソッドはコントロールをすぐに非表示にします。Hide メソッドには、コントロールを実際に非表示にするコードが含まれているか、コードを呼び出しています。

Visible を false に設定すると、(ほとんどすぐに) コントロールが非表示になる可能性がありますが、これは、オブジェクトの状態が変化した (Visible プロパティが変化した) ことを検出し、実際にコントロールを非表示にすることによって即座に応答する実行中の他のコードがあるためです。

ここでは、実際のコード ライブラリには言及せずに、一般的な意味で話しています。Visible プロパティをコーディングして実際にコントロールを非表示にすることは完全に可能ですが、それはプロパティに副作用がないという通常の規則を破ります。

したがって、プロパティはオブジェクトの状態を変更しますが、メソッドは実際に何かを行います (オブジェクトの状態を変更する場合と変更しない場合があります)。

于 2013-04-17T16:15:31.477 に答える