最近在看Clean-Code(代码整洁之道) 里面有些内容还是不错的,所以给大家分享下。
意思是说名称和意思要一致,更精确的说应该是看到名字就能想到意思。
对程序员来说取名通常是一件麻烦的事情,尤其是取一个好的名字。
这里截取一段书中的代码:
public List<int[]> GetThem() { List<int[]> list1 = new List<int[]>(); for(int[] x in theList) { if(x[0]==4) list1.Add(x); } return list1; }
这段代码有几个”名不符实”的地方。
我认为名副其实最重要的还是”看到名字就能自然而言想到意思”
意思是说名称不会误导别人,
例如取一个函数名字是ToLength32String(),但是最后返回的string长度是33,31,不是32.那么就有问题了。
在编程中最容易误导的莫过于 0 和o, 1和l 了。
如果你的VS的设置字体是:
那么你会看到
很明显的可以看到区别
意思是说名称之间的区别要明显。
例如Customer == CustomerObject == CustomerInfo
或者Name==NameString==NameData
所以在取名称的时候,假设有一个方法叫做GetCustomer,那么就 不应该出现GetCustomerInfo,GetCustomerData,GetCustomerObject 之类的方法了。
最经典的莫过于数据库中的var1 ,var2,var3,var4…..之类的了,说得好听点是保护代码,难听点就是坑爹之类的了。
匈牙利语标记法(Hungarian Notation,HN)
在Windows的C语言API的时代,HN非常重要,传说HN是为了纪念具有传奇色彩的微软程序员Charles Simonyi。这种标记法比较简单:即变量名以表明该变量数据类型的小写字母开始。
例如szCmdLine的前缀sz代表string end of zero.以0 结尾的字符串。
strPhone,代表Phone是字符串类型。
而今,大部分语言是强类型的,代码编辑环境都已经先进到在编译开始前就侦测到类型错误的程度!,所以HN和其他类似的格式编码都多余了。
它们增加了修改变量,函数,或类的名称或类型的难度。
PhoneNumber phoneString;
//类型变化时,名称并未变化。
很多程序员都喜欢短小精湛的名字,比如我,但是有时候短小精湛的名字被别人用了,无奈只能取另一个名字。
纵观大部分书籍上关于名字的长短介绍,都倾向于在名字意义明确的情况下,将名字长度尽量缩小,很多人都不喜欢长名字,比如:RenderPageWithSetupAndTeardowns。
这个名字就用了很多单词Render,Page,With,Setup ,Teardowns.
但是意义却是明确的,不会产生歧义,所以别害怕长名称,长而具有描述性的名称,要比短而令人费解的名称好。