【发布时间】:2009-06-11 23:14:20
【问题描述】:
这个问题与 C# 有关,但也可能适用于其他语言。我对使用以下代码持保留态度:
using System.Windows.Forms;
class MyForm : Form
{
private Timer myTimer;
private Button myButton;
public MyForm()
{
// Initialize the components, etc.
myTimer.Tick += new EventHandler( myTimer_Tick );
myButton.Click += new EventHandler( myButton_Click );
myTimer.Start();
}
private void myTimer_Tick( object sender, EventArgs eventArgs )
{
myTimer.Stop();
// also, I see a lot of usage of
// Timer.Enabled = true/false instead of -^
myButton_Click( this, ea /* or event EventArgs.Empty, or null */ );
return;
}
private void myButton_Click( object sender, EventArgs eventArgs )
{
// do a lot of stuff, with lots of logic that doesn't even use the
// state of the eventArgs
return;
}
}
只有我一个人吗,因为上述风格是我最讨厌的?是否还有其他人喜欢将事件处理与函数的工作负载分离,甚至将复杂的例程分离到单独的函数中?
甚至有公认的风格吗?我觉得 C# 中的事件处理所具有的任何表现力和灵活性都可能会因为这样的样式而丢失。我觉得如果您有一个表示“已单击按钮”的方法,则仅应在单击按钮时调用它。
对于这样写的人,我想说:如果您坚持使用 EventHandler 方法来处理您的计时器滴答声和按钮点击,那么就将其命名为 button_Click 以外的其他名称——也许是“handleUserEvent( object sender, EventArgs eventArgs )”。
实际上,问题是,是否有任何广泛使用的样式指南支持或阻止上述用法?
【问题讨论】:
-
是的,在我看来,这也不是好的做法。您的“HandleUserEvent”想法可能是解决它的好方法 - 尽管在大多数情况下您可能可以将其命名为更好的名称。
标签: c# .net formatting coding-style