习惯决定性能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行内.不要以函数调用频率为借口,用过程化的思想来处理面向对象编程只能说明设计上有问题. 同样的函数调用次数能达到同样的效果.