代码改变世界

习惯决定性能I

2010-12-10 12:03  白面青铜  阅读(1454)  评论(22编辑  收藏  举报

大的架构不用说了,这说的是一个既定架构下的性能.

一. 命名:

不要对名称空间视而不见.

比如:

namespace Alibaba.Taobao.Users

{

  public class UserImp

  {

    public User GetUserByUserId(long userId)

    {

    }

    

    public User GetUserByUserName(long userId)

    {

    }

 

  }

}

有什么严重问题吗?有!GetUserByUserId,GetUserByUserName算下这两个方法居然有14,16个字符.最好的应该是

public User Get(long userId)

public User Get(string userName)

一下子节省30-6=24个字符.

如果一个项目里面有1000个这个样方法,并且在10000个地方引用,算下程序集的大小会增加多少? 24(1000+10000)=264000个字符,在记事本中打264000个字母看有多大吧!

再说了,引用的时候会产生冲突吗?就算是静态方法也不会的!

UserImp uip=new UserImp();

uip.Get(uid);

uip.Get(name);

不要以见名闻义为借口,GetUserByUserId这类命名方法就好像把别人当傻子一样的,而且还弄花别人的眼睛. 记住一点: 明显的常识性问题不用去强调,不然就是画蛇添脚.

三个要点:

1. 命名空间明确哪个包.

2. 方法重载明确不同调用.

3. 参数名明确区分参数意义.

 

二. 集合查找

    所有的数组,集合不要在一个方法里面重复查找.

错误:

   if(a== pars[i])

 {

   string b=pars[i];

   }

   

   if(null!= Cache[i])

 {

  user=Cache[i] as User;

 }

正确:

  string s=pars[i];

   if(a== s)

 {

   string b=s;

   }

   

 object o=Cache[i];

   if(null!= o)

 {

  user=o as User;

 }

如果,我是说如果不小心你的一个集合中有10000个条目,每次查找就算用多用1毫秒,如果遇到同步1000个用户访问就多用1秒钟. 倒,这个网站太烂了,经常一秒秒的卡!

 

三. 代码长度

    1. 最好一个类大小不要翻屏.

    2. 除非资源加载类方法,代码行应该控制在20行内,最好在10行内.不要以函数调用频率为借口,用过程化的思想来处理面向对象编程只能说明设计上有问题. 同样的函数调用次数能达到同样的效果.

我是谁