Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
一遍又一遍,我发现自己遵循准则在C#中实现事件,然后在客户端代码不需要准则所带来的任何好处时,仅使用Action便退回到了更简单的实现。
可以说,我将添加,除非实际需要,否则省略发送者对象。是的好东西,因为它促进了触发器和处理程序的解耦。一般来说,我认为避免编写不需要的代码是一个好习惯。
我并不是说应该永远取消准则,遵循这些准则会有好处(请参见下面的链接)。我的问题是,是否应该始终遵循它。
下面的示例显示了如何将“天真事件”模式与指导模式进行比较。
请参阅准则:http://msdn.microsoft.com/en-us/library/w369ty8x.aspx
好处:What are the benefits of having events conforming to Net guidelines?
谢谢!
想要改善这个问题吗?更新问题,以便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