Closed. This question is opinion-based。它当前不接受答案。












想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

5年前关闭。



Improve this question




一遍又一遍,我发现自己遵循准则在C#中实现事件,然后在客户端代码不需要准则所带来的任何好处时,仅使用Action便退回到了更简单的实现。

可以说,我将添加,除非实际需要,否则省略发送者对象的好东西,因为它促进了触发器和处理程序的解耦。一般来说,我认为避免编写不需要的代码是一个好习惯。

我并不是说应该永远取消准则,遵循这些准则会有好处(请参见下面的链接)。我的问题是,是否应该始终遵循它。

下面的示例显示了如何将“天真事件”模式与指导模式进行比较。
// This is neat
class NaiveEvents
{
    public event Action<string> OnAlert;
    public void TriggerOnAlert(string message)
    {
        OnAlert(message);
    }
}

// Is this bloated?
class ProperEvents
{
    public event EventHandler<OnAlertEventArgs> OnAlertEvent;

    public void TriggerOnAlert(string message)
    {
        OnAlertEvent(this, new OnAlertEventArgs(message));
    }

    public class OnAlertEventArgs : EventArgs
    {
        private readonly string _message;
        public OnAlertEventArgs(string message)
        {
            _message = message;
        }
        public string Message { get { return _message; } }
    }
}

class EventsDemo
{
    public static void DemoNaiveEvents()
    {
        var ev = new NaiveEvents();
        ev.OnAlert += (msg) => { Console.WriteLine(msg); };
        ev.TriggerOnAlert("Hello World");
    }

    public static void DemoProperEvents()
    {
        var ev = new ProperEvents();
        ev.OnAlertEvent += (sender, args) => Console.WriteLine(args.Message);
        ev.TriggerOnAlert("Hello World");
    }
}

请参阅准则:http://msdn.microsoft.com/en-us/library/w369ty8x.aspx

好处:What are the benefits of having events conforming to Net guidelines?

谢谢!

最佳答案

准则或约定是任意的,并且都不适合所有情况,环境,解决方案或观点,但这就是创建这些文档的原因: standarization

有时某些准则似乎无用,但我的谦卑意见从来没有遵循准则和/或惯例会比不遵循准则更糟糕。

可维护性,代码重用性,可预测性,可读性以及每天都无需讨论,因为每个开发人员对于琐碎事物的所有观点都有自己的见解,对我而言,它具有比一切都有值(value)的值(value)。

着眼于您当前的问题,并根据我在上面所说的内容,即使没有性能或设计质量的好处,我也建议并建议,如果某些软件开发是出于专业目的,则必须遵循全局准则和约定。如果是用于开源听众,则也应遵循这些原则。

作为一名狂热的专业开发人员,我喜欢编写,阅读和维护遵循事实上的编码标准的代码,因为我知道每个人都可以理解我的工作-显然,文档是一个加分! -

关于c# - 我应该停止违反.NET事件准则吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6212718/

10-10 17:01