



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编程中的命名设计那点事在我开始设计系统的时候,我会花去很多时间去设计命名,因为好的命名和好的设计是分不开的。In the beginning was the Word, and the Word was with God, and the Word was God太初有道。道与神同在,道就是神。 (约翰福音第一章,第一节)在设计过程中给类,方法和函数好的命名会带来好的设计,虽然这不是一定成立,但是如果坏的命名那一定不会给你带来好的设计。在设计过程,如果你发现你很难命名某一个模块,某个方法时,可能你真正遇到的问题不是难命名的问题,而是这个设计是否真的合理,你或许应该花更多的时间来重新设计一下你的模块。好的命名不仅会带来好的设计,好的命名还提高了程序的可读性,降低代码维护的成本。另一方面,如果糟糕的命名会给代码带来一堵无形的墙,让你必须深入代码去研究代码具有的行为,增加你理解代码的时间。为此我总结了几条关于命名的指导原则,希望这几条原则能为你的命名设计带来帮助,我使用的是C+的语法,当然这些原则也很容易扩展到其他语言中去。类型命名(类,接口,和结构)名字应该尽量采用名词Bad:HappyGood:Happiness不要使用类似名字空间的前缀Bad:SystemOnlineMessageGood:System:Online:Message形容词不要用太多,能描述清楚就行Bad:IAbstractFactoryPatternBaseGood:IFactory在类型中不要使用Manager 或则 Helper 或则其他没意义的单词如果你一定要在一个类型上加上Manager或Helper,那么这个类型要么就是命名的非常糟糕,要么就是设计的非常糟糕,如果是后则,那么这个类型就应该管理manage和帮助help一下自己了。Bad:ConnectionManagerXmlHelperGood:ConnectionXmlDocument, XmlNode, etc.如果某个类不能通过简单的命名来描述它具有的功能,可以考虑用类比的方式来命名Bad:IncomingMessageQueueCharacterArraySpatialOrganizerGood:MailboxStringMap如果你使用类比,你就应该一致的使用它们Bad:Mailbox,DestinationIDGood:Mailbox,Address函数(方法和过程)简洁Bad:list.GetNumberOfItems()Good:list.Count()不要太简洁Bad:list.Verify()Good:list.ContainsNull()避免缩写Bad:list.Srt()Good:list.Sort()对于完成某件事情的函数使用动词Bad:obj.RefCount();Good:list.Clear();list.Sort();obj.AddReference();对于返回布尔型的函数,使用类似提问的方式Bad:list.Empty();Good:list.IsEmpty();list.Contains(item);对于只是返回属性,而不改变状态的函数则使用名词Bad:list.GetCount();Good:list.Count();不要在函数名字中重复参数的名称Bad:list.AddItem(item);handler.ReceiveMessage(msg);Good:list.Add(item);handler.Receive(msg);不要方法的名字中重复此方法的类的名称Bad:list.AddToList(item);Good:list.Add(item);不要在函数的名字中加入返回类型,除非函数名必须以返回类型进行区别Bad:list.GetCountInt();Good:list.GetCount();message.GetIntValue();message.GetFloatValue();不要名字中使用And 或则 Or如果你使用一个连接词来连接函数名,那么这个函数肯定是做了太多的事情,更好的做法是将其分成更小的函数来处理(类似面向对象设计准则中的责任单一原则)。如果你想确保是这是一个原子的操作,那么你应该用一个名字来描述这个操作或一个类来封装他Bad:mail.VerifyAddressAndSendSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧园艺课程改革在新农科背景下的实践
- 气道异物类知识竞赛题及答案
- 2025-2030年全球新能源产业政策对新能源产业市场拓展激励报告
- 上海策划咨询报价方案
- 日语考试模拟试题及答案
- DB65T 4382-2021 圆盘式果树修剪机 作业质量
- 段防洪应急预案(3篇)
- 书法专业面试题目及答案
- 最专业情商测试题及答案
- DB65T 4414-2021 机采棉水肥一体化化肥减量增效技术规程
- GB/T 3253.8-2009锑及三氧化二锑化学分析方法三氧化二锑量的测定碘量法
- GB/T 24720-2009交通锥
- GB/T 15065-2009电线电缆用黑色聚乙烯塑料
- Frenchay构音障碍评定
- 陈嘉庚生平介绍(中文+英文版)
- 建筑装饰施工技术-轻质隔墙工程施工课件(-)
- DB21T 3354-2020 辽宁省绿色建筑设计标准
- 我和我的祖国课件
- 肉制品加工技术完整版ppt课件全套教程(最新)
- 《基因组学》课程教学大纲(本科)
- GB∕T 11032-2020 交流无间隙金属氧化物避雷器
评论
0/150
提交评论