易于理解。
咱们这些人中虽然不少人英文不错,但总也不如母语理解起来自然、高效、准确吧?
有些人英语一般,就通过查词典写出了一堆不伦不类的英文命名,数日后再看自己的代码,又要去查词典,这自己麻烦不要紧,权当学英语了,问题是这代码拿去给别人看,人家一看就头大。这时如果直截了当地使用中文命名,不就什么问题都解决了吗?
并且中文命名还可以显著减少代码注释,降低代码阅读难度。
试读这段代码(我的英文水平很烂,所以我就是只能通过查词典来写出不伦不类的命名):
///
/// 执行充值,并返回是否成功
///
public bool RunSupplement(DatabaseEntities c)
{
if (Verify(this)==true)
{
this.UsedTime = DateTime.Now;
this.UsedUser = Membership.GetUser().UserName;
var p= UserProfile.GetUserInfo(this.UsedUser);
p. SupplementPoint += this.Value;
p.Save();
c.SaveChanges();
return true;
}
return false;
}
再试读这段代码:
///
/// 执行充值,并返回是否成功
///
public bool 执行充值(DatabaseEntities c)
{
if (检验有效性(this)==true)
{
this.使用时间 = DateTime.Now;
this.使用用户 = Membership.GetUser().UserName;
var p= UserProfile.获取用户信息(this.使用用户);
p.充值点数 += this.面值;
p.Save();
c.SaveChanges();
return true;
}
return false;
}
哪个理解起来更轻松?
在这里,代码本身其实就像是一段注释,不是吗?你还要坚持用英文写程序,而在字里行间穿插中文注释吗?
另外,我不知道各位初学程序时看到代码是什么感觉,我当时感觉那堆代码就是天书、就是密码,尤其是当我连关键字、类、属性、方法等等的概念还没有的时候,那些简直是不可理解的东西,这些代码就像是程序员的“黑话”,让外行人犯晕。而假如我们的示例代码都穿插中文命名的话,是不是可以便于新手理解、降低门槛、打破神秘感呢?
此外,出于同样的原因,InfoQ中也有这样一篇文章推荐使用中文命名测试方法:
在英文代码之间清晰可辨。
在英文代码中加入中文,就如同在羊群中加入奶牛一样,你总能一眼找出你加进去的东西。
当我们需要重新审视一个方法的参数的功能时,你会发现使用中文为参数命名是绝佳的做法。
还是先来看看咱的烂英文写出的方法:
public static Image CutImage(Image Image, Point StartPoint, Size CutSize)
{
Bitmap resizedBmp = new Bitmap(CutSize.Width, CutSize.Height);
Graphics g = Graphics.FromImage(resizedBmp);
g.DrawImage(Image, new Rectangle(0, 0, CutSize.Width, CutSize.Height), new Rectangle(StartPoint.X, StartPoint.Y, CutSize.Width, CutSize.Height), GraphicsUnit.Pixel);
return resizedBmp;
}
这样一小坨代码虽然很简单,但你要找到参数被使用的位置还是有点头疼的,而如果它们变成“奶牛”的话……
public static Image 剪裁图像(Image 图像, Point 起始坐标, Size 剪裁尺寸)
{
Bitmap resizedBmp = new Bitmap(剪裁尺寸.Width, 剪裁尺寸.Height);
Graphics g = Graphics.FromImage(resizedBmp);
g.DrawImage(图像, new Rectangle(0, 0, 剪裁尺寸.Width, 剪裁尺寸.Height), new Rectangle(起始坐标.X, 起始坐标.Y, 剪裁尺寸.Width, 剪裁尺寸.Height), GraphicsUnit.Pixel);
return resizedBmp;
}
如果你还觉得找起来费劲的话就得配花镜了。
任何语言的字符揉在一起都像一团蚂蚁,而两种语言结合起来使用就能够鲜明地区别开来,这样我们一眼扫过便可轻松明白参数的使用位置和意义。