C#のイベント関連の命名規則ってあるのかな?
イベント名は、過去形で?
イベント名は、どうやら「~~ed」と過去形になっていることが多い。
■1a. public event System.EventHandler ValueChanged;
でも名前だけを見たとき、イベントなのかプロパティなのかがわかりにくい。
■1b. public event System.EventHandler ValueChangedEvent;
だけど、これはこれで冗長な感じがする。
そのイベントを起こす内部関数は、「On+イベント名」で?
イベントを起こす際には1枚ラッパ関数を挟んで、イベントを起こすようだ。
で、そのラッパ関数は「On+イベント名」となっていることが多い。
■2a. protected void OnValueChanged() {}
これは、何となくイベントが「起きた」のか「起こす」のかがわからない。
■2b. protected void RaiseValueChanged() {}
これは、どうだろう。
そのイベントを受け取る側は・・・?
で、イベントを受け取る関数は、どう書いたらいいんだろう。
Visual Studio が吐くコードは、こんなの↓
■3a. void HogeClass_ValueChanged(object sender, EventArgs e){}
■3b. void myHogeInstance_ValueChanged(object sender, EventArgs e){}
だけど、これはそれぞれマイクロソフトの名前付け規則「識別子にはアンダースコアを使用できません」と「識別子の大文字/小文字を正しく使い分ける必要があります」に違反している。
で、考えたのは、以下。
■3c. void HogeClassValueChangedEventOccurred(object sender, EventArgs e) {}
これがはじめに考えたもの。ちょー長い。
■3d. void WhenValueChanged(object sender, EventArgs e) {}
これはわかりやすい(ような気がする)。
が、どこでイベントが起きたのかわからない。
■3e. void WhenValueChangedInHogeClass(object sender, EventArgs e) {}
そこで「In~~」と場所まで書く。
これは・・、長すぎて区切りがわからない。
■3f. void WhenHogeValueChanged(object sender, EventArgs e) {}
で、もう少し短くしてみる。
だけど、なんか意味をとりづらい気がする。
んー、どうしたら、いいんだろう。
追記 - 2008年3月6日 15:08@JST
フィードバック欄にて、よねけんさんが挙げておられるサイトは以下。
追記 - 2008年3月7日 16:44@JST
フィードバック欄にて、れいさんが挙げておられるサイトは以下。
msdnブログ、Krzysztof Cwalinaさんの「API Design Guidelines Digest」