【程序设计中的命名】
在设计过程中好的命名不一定但更大可能会带来好的设计,但是如果坏的命名那一定不会给你带来好的设计。在设计过程,如果你发现你很难命名某一个模块,某个方法时,可能你真正遇到的问题不是难命名的问题,而是这个设计是否真的合理,你或许应该花更多的时间来重新设计一下你的模块。
1、名字应该尽量采用名词
Bad: Happy
Good: Happiness
2、不要使用类似名字空间的前缀
Bad: SystemOnlineMessage
Good: System::Online:Message
3、形容词不要用太多,能描述清楚就行。
Bad: IAbstractFactoryPatternBase
Good: IFactory
3、如果某个类不能通过简单的命名来描述它具有的功能,可以考虑用类比的方式来命名。
Bad: IncomingMessageQueue
CharacterArray
SpatialOrganizer
Good: Mailbox
String
Map
4、如果你使用类比,你就应该一致的使用它们
Bad: Mailbox,DestinationID
Good: Mailbox,Address
5、简洁
Bad: list.GetNumberOfItems()
Good: list.Count()
6、不要太简洁 Bad: list.Verify()
Good: list.ContainsNull()
7、避免缩写 Bad: list.Srt()
Good: list.Sort()
8、对于完成某件事情的函数使用动词 Bad: obj.RefCount();
Good: list.Clear();
list.Sort();
obj.AddReference();
9、对于返回布尔型的函数,使用类似提问的方式 Bad: list.Empty();
Good: list.IsEmpty();
list.Contains(item);
10、对于只是返回属性,而不改变状态的函数则使用名词 Bad: list.GetCount();
Good: list.Count();
12、不要在函数名字中重复参数的名称 Bad: list.AddItem(item);
handler.ReceiveMessage(msg);
Good: list.Add(item);
handler.Receive(msg);
13、不要方法的名字中重复此方法的类的名称 Bad: list.AddToList(item);
Good: list.Add(item);
14、不要在函数的名字中加入返回类型,除非函数名必须以返回类型进行区别 Bad: list.GetCountInt();
Good: list.GetCount();
message.GetIntValue();
message.GetFloatValue();
15、不要名字中使用And 或则 Or
如果你使用一个连接词来连接函数名,那么这个函数肯定是做了太多的事情,更好的做法是将其分成更小的函数来处理(类似面向对象设计准则中的责任单一原则)。
如果你想确保是这是一个原子的操作,那么你应该用一个名字来描述这个操作或一个类来封装他 Bad: mail.VerifyAddressAndSendStatus();
Good: mail.VerifyAddress();
mail.SendStatus();