Thinking and Researching

数字冰块的思考空间

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

看到了孙展波周末休闲之.NET Quiz (10) 的一道题:

以下代码质量不高,因为有经验的.NET程序员不会这样编程。如何修改?

(代码背景: Suppose we are writing a control class that raises Loaded event when it is fully loaded. There is no need to provide additional information for this event. The method that is called to raise the event looks like this: )

private void FireLoadedEvent(){
             if (Loaded 
!= null){
                        EventArgs args 
= new EventArgs();    
                        Loaded(
this, args);
            }

}
 

这道题的正确答案是:

protected virtual void OnLoaded() 

    
if (Loaded != null
    

        Loaded(
this, EventArgs.Empty); 
    }
 
}
 


如果单论为编写一段代码而写代码,题中的代码也未尝不可,但是,如果这是一个具有行为的控件就不能这样做了。
首先,引发 Event 的方法必须以 On 开始,这是编码的规范;其次,作为控件,应该具有行为扩展功能,protected virtual 的方法使这个行为在派生类中能够被赋予内多的内容;其三,EventArgs args = new EventArgs();会使方法在每一次被调用时都初始化一个新实例,从内存和时间分配上都划不来,而 EventArgs.Empty 是一个 static 字段,只是在第一次被调用时初始化,这样便提高了程序性能。
以小见大,在我们日常的编码中,能想得到这些吗?
P.S. 以前在 CSDN.NET 上看到一个帖子,讲的是'='两边留不留空格的问题,那么,您留吗?

posted on 2004-07-24 20:04  数字冰块  阅读(1198)  评论(3编辑  收藏  举报