Kdykoli definuji své vlastní události, používám vzor, jako je následující (kterému věřím , jak doporučuje MSDN dělá to):

public class MyEventClass { private bool _value; // Backing variable public bool Value { get { return _value; } set { if (value != _value) // Only raise event if value is changed/different { _value = value; OnValueChanged(EventArgs.Empty); } } } public event EventHandler ValueChanged; // Anything can subscribe to the event protected void OnValueChanged(EventArgs e) // Only this and children can invoke event { if (ValueChanged != null) ValueChanged(this, e); } } 

Klientský kód se tedy musí přihlásit k odběru události a funguje automaticky.

Nicméně cítí se těžkopádně předat parametr EventArgs e, zejména u třídy, která používá EventHandler ke zvýšení svých událostí, protože základní EventArgs nemá k němu žádná data, pouze EventArgs.Empty.

Bylo by považováno za faux pas změnit to na toto?

protected void OnValueChanged() { if (ValueChanged != null) ValueChanged(this, EventArgs.Empty); } 

Komentáře

  • Co to bolí, když jsem tam byl? Budete jej muset přidat později, až zjistíte potřebu předat argumenty události? Pravděpodobně …
  • Přemýšlel jsem o tom jen jako o výhodě, abych si při psaní kurzu ušetřil nějaké úsilí. Ale ' máte úplnou pravdu v tom, že se to mohlo později změnit (pravděpodobně to ' t nevyhralo …), a byla by to zlomová změna, takže to můžu udělat hned poprvé. Děkujeme!
  • V tomto konkrétním případě není ' normálnější použít PropertyChangedEventArgs a -Handler a předat jako argument název vlastnosti? Nebo je to jen špatný příklad?
  • Můj kód může být špatným příkladem, ale tahal jsem své konvence návrhu a pojmenování z několika tříd .NET, které používají výchozí názvosloví EventArgs a -Changed.

Odpověď

Je to špatně? Ne. Způsobí to, že si lidé budou stěžovat na váš kód? Ne.

Bude na pár minut obejít nějakého zaneprázdněného vývojáře, zatímco se bude snažit zjistit, jaké jsou parametry a zda mu pomohou vyřešit problém? Mohlo by to být …

Usnadní používání vaší třídy …?

Standardy a vzory jsou užitečné, protože jsou snadno rozpoznatelné a použité (nebo ignorované). Odchylka od konvencí by měla být učiněna za účelem, nejen proto, že můžete. To platí, ať už se jedná o styl závorky, názvy parametrů nebo seznam argumentů. Udělejte to z nějakého důvodu, nejen proto, že se kompiluje.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *