静态方法 是可重用代码还是模块

       比如,有个静态方法
       public class StaticTest{
              public static void Test(){}
       }

      这个是可重用代码还是模块呢?恐怕不好说。因为,可重用代码和模块非常相似。怎么区分这两个概念?还真是头疼。委托就是一种可重用的代码,而委托的方法,则是模块。事件,Handler是可重用方法,而event是模块,可以这样理解?

      可重用代码也就是可以适用于不同上下文的代码,而模块呢是指功能分离成快的方法。可以看出最起码在编码中方法调用的次数,可重用的方法适用次数要大于等于模块方法。

        public class Test{
               public static void DoMethodA(){}
               public static void DoMethodB(){DoMethodA();}
      }

      public class TestA{
               public void DO(){Test.DoMethodB();};
        }
       public class TestB{
                public void DO(){Test.DoMethodB();};
      }
       Test类有两个方法,DoMethodA 和DoMethodB,DoMethodB使用了DoMethodA。在上面的代码中虽然在运行时执行次数上来说DoMethodA和DoMethodB应该是次数相同的,但是,DoMethodB得引用次数要高于DoMethodA。可以认为在上面的代码DoMethodA是模块,而DoMethodB是可重用代码。假如把DoMethodA的修饰符修改为private,那么就更加可以说明问题了。

       从上面代码可以看出一个什么问题呢?假如修改了DoMethodB方法会导致什么问题?很可能需要修改任何使用了DoMethodB方法的代码。可见DoMethodB难于修改,因为它的应用次数过多,很难保证某一个地方不出现逻辑错误。
       而模块就要好很多啦,修改DoMethodA,只需要在DoMethodB方法中进行修正就可以了。
       那么把可重用代码尽量拆分成多个模块是不是更加方便呢?我认为是的。我认为把可重用代码分解为多个模块可以让代码更加易于修改。

       对于运行时多次使用的方法,应该定义为静态方法,但是可能在代码中只使用了一次,因此,静态方法完全可以是模块而不是可重用代码。

       对于可重用代码,模块,和静态,不是一定要把可重用代码设计为静态的,是不是设计为静态应该由代码运行时,估计的执行次数来决定。而可重用代码是提炼相同逻辑而来。至于模块么,只是让代码更加易于理解和维护。

水平原因,思路可能不够清晰,希望和大家多多交流。

posted on 2007-11-21 01:04 Birdshover 阅读(2093) 评论(10)  编辑 收藏 所属分类: Thinking about develop

评论

#1楼  2007-11-21 07:13 静旅      

关系还是说得不清楚。。
还是有点迷糊   回复  引用  查看    

#2楼  2007-11-21 08:01 个人知识管理      

增加一条:对于服务器端代码,还要权衡代码的执行路径和次数问题   回复  引用  查看    

#3楼  2007-11-21 08:56 PureEviL      

想.Net Framework 一样,各个重载方法最终都是调用一个xxxInternal或者xxxMain方法。
如有变化,只需修改这个方法即可   回复  引用  查看    

#4楼  2007-11-21 09:42 Cat Chen      

静态方法还是属于类,还是以类聚的思想为主导啊。   回复  引用  查看    

#5楼 [楼主] 2007-11-21 10:06 BirdsHover      

内聚思想适用模块,应该和是否静态没有必然联系   回复  引用  查看    

#6楼  2007-11-21 10:30 ★紫¤风☆ [未注册用户]

我是初学者!!在这儿不发表任何评论!
  不过得感谢楼主  我看明白了你说的意思!  
   以后运行程序时就知道该怎么弄了!   回复  引用    

#7楼  2007-11-21 10:53 lost2 [未注册用户]

什么乱七八糟的   回复  引用    

#8楼  2007-11-21 12:19 omnislash      

提个小建议:先提出对“可重用代码”和“模块”的正式定义。一千个人眼中有一千个哈姆雷特,虽然只是两个简单的词,大家的理解肯定会有不一样的地方。
名正才能言顺,是不是这个道理?   回复  引用  查看    

#9楼  2007-11-21 14:25 Enzo      

突然想起一句话:
高内聚 低耦合;功能内聚。
  回复  引用  查看    

#10楼  2007-11-22 10:07 wenanry      

道理明白,但你说的太不明白了。   回复  引用  查看    

导航

公告

网名: yurow birdshover
       无术 夕阳轨迹 等
本名: 谢平
籍贯: 江苏溧阳
位置: 上海
职业: C# & 打字
联系方式: 19999351(QQ)
 MSN.gif
更新了8个小时,终于把compass下载下来了 ==@ 7-24 12:26
<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

与我联系

常用链接

留言簿

我管理的小组

我参与的团队

我的标签

随笔分类(78)

文章分类(19)

收藏夹(1)

关注的博客

搜索

积分与排名

最新评论