C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 32 を表示中)
■15317 / )  Re[8]: デリゲートインスタンスの名前ガイドライン
□投稿者/ れい (443回)-(2008/03/11(Tue) 01:26:15)
No15282 (まどか さん) に返信
> #VB
> 次のwakaranaiの名前のガイドラインがよくわかりません。

よねKENさんの投稿にあるように、
イベントなのかどうかで名前付けがことなりますよね。

> Private Sub xxx(ByVal parm As Object)
> End Sub
>
> Private Delegate Sub xxxHandler(ByVal e As Object)
> Private wakaranai As New xxxHandler(AddressOf xxx)

これは「xxxHandler」であって、「xxxEventHandler」ではないですね。
また、引数がsenderとeventargではありません。
Eventキーワードもないです。

とすると、イベントではないのですね?
イベントではない場合、デザインガイドラインに従うなら
Callbackという名前をつけるべきでしょう。

Private Delegate Sub xxxCallback(ByVal e As Object)

ですね。
xxxは何が目的のCallbackなのか、わかるような名前をつけます。
TimerだとかWaitだとかProcessだとか。

このデリゲートで表せるメソッドは、一般に複数あります。
複数ある場合、当然意味が違うので名前付けには困りません。
一つしかない場合はそのままというのも普通なようです。

・デリゲートとメソッドが一対一対応の場合
Private Sub xxx(ByVal parm As Object)
End Sub

・デリゲートとメソッドが一対多対応の場合
Private Sub yyy(ByVal parm As Object)
End Sub

Private Sub zzz(ByVal parm As Object)
End Sub

で、問題はこのデリゲートのインスタンスにどう名前をつけるかですが。
これはクラスのインスタンスにどう名前をつけるのか、というのと同じ問題です。

対象のインスタンスが、スコープ内でどのような役割を担っているか、
それがわかるように名前をつければいいのでしょう。
ですから、まどかさんの示した情報だけでは名前がつけられないと思います。

私はイベント以外のデリゲートをメンバに持つようなクラスを作ったことがありません。
そういった用途は殆どないように思います。


参考までに。
イベントもデリゲートを使って作られているのは周知ですが、
そのデリゲートもクラスのメンバで、名前があります。

Private Event xxx As EventHandler

と宣言すると、「xxxEvent」という名前のEventHandler型のメンバが自動で定義されます。

public event EventHandler xxx;

の場合は「xxx」自体がEventHandler型のデリゲートになります。
返信 編集キー/


管理者用

- Child Tree -