`
javatgo
  • 浏览: 1115453 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

程序命名的一些提示

阅读更多

酷壳:http://CoolShell.cn

选择一个正确的名字是编程中最重要的事。以前酷壳向大家推荐过两篇文章《编程命名中的7+1个提示》和《编程中的命名设计那点事》,今天再向大家推荐一篇。一个正确的命名可以让你更容易地理解代码的程序,好的命名可以消除二义性,消除误解,并且说明真实的意图,甚至可以让你有清新的气息以让你更能吸引异性。;-)

方法,类和变量

正确的名字可以让你的程序顾名思义,下面是一些提示:
  • 不要使用”ProcessData()“这样的命名
    你如果在你的程序生涯中使用这样的函数名,那么这意味着你将是一个不合格的程序员而会被淘汰或解雇。请明确实际的功能。比如:ValidateUserLogin(验证用户登录)EliminateDuplicateRequests(去除重复请求)ComputeAverageAge(计算平均年龄),等等。
  • 让命名来帮你设计程序
    让我们假装有这么一条规则是——“任何的函数是有输入/输出的”,那么,你需要思考的是所有的把input变成ouptut的步骤,然后,你可以选择一个简短的句了来说明你的这段程序,然后,把这个短句再精练一下,最终成为你的函数名,而那个短句则成了你程序的结构。
  • 命令不应该是模糊的
    如果你有一个类名叫:FilterCriteria,但实际上其可用于文件过滤,那么这个类应该叫做:FileFilterCriteria ,就算是你真要想要用FilterCriteria,那它也应该是抽象类。
  • 避免过多的工作
    这只是一个风格上的事情,但还是需要注意一下。在上面,我们使用到了ValidateUserLoginEliminateDuplicateRequests两个名字,这两个命令看上去需要做很多比较复杂的事。所以,让你的名字变简单一些也有利于你的程序更容易阅读和维护。一个软件本来就是由不同的模块拼成,而一个模块又是由更细小的函数和类拼成。编程中,我们都知道,一个函数的尺寸应该控制在200行以内,一个类的接口应该控制在20个以内。所以,从其名字上我们就不要让一个名字取得太大了。
  • 避免类名以”Manager” 结尾
    这样会让你类变成一个黑盒子,当然,有一些程序员喜欢使用这样的名字让那个类看起来好像更强大一些,但其实这样并不好。一般来说使用Manager这个字眼通常是使用工厂模式,或是一个容器,所以,对于一些最基本的算法或是数据结构的封装,最好是在其名字上体现这一算法或数据结构的名字,如:SortedListConnectionPool 。
  • 为你的枚举类型使用单数名字
    一个枚举类型会列出所有可能的值,所以,叫animalType会比animalTypes 要好。
  • 匈牙利命名应该更多的关注名字的含义而不是类型
    匈牙利命名是一个以前很流行的命名方法,其给出了一整套的方法告诉你如何标记你的变量的类型,但可惜的是很多程序员过多的关注了变量了类型,而不是变量名的含义。而变量名的含义才是根本。
  • 不要让名字隐藏了内在
    比如,我们有段代码需要处理用户的输入,把其转成UTF-8码,然后标准化(比如一些协议),最后再处理相应的转义字符。千万不要把这函数命名为Escape(),因为你需要调用ToUTF8()以及NormalizeEntities()最后才是Escape()函数。如果你希望使用一个函数名来做这三件事,那么,你宁可使用一个模糊的名字再加上充分的注释,而不是一个确切的名字。模糊的名字会让别人在阅读时想进去看看,而确切的名字则会让别人在阅读代码时忽略细节(这看起来和第一点有点矛盾,其实也是为了程序的易读)。比如:ProcessUserInput()
  • 一致性,一致性,一致性
    强调文章和代码的一致性,就算是文档写得再详细,我们也要去读代码,所以文档主要是体现思路和反映需求和设计。在程序上,我们的命令应当和文档中的术语保持一致,而程序中的命名也应该是用和文档相同的风格,这样,我们可以少很多理解上的成本。
  • 不要害怕改名
    有一些时候,你会觉得某具名字不合适,你需要改动一下。但你马上发现要改这个名字,需要修改很多的程序代码。在这里有一个原则,如果你的这个名字不是以API的方式发布时,那么你就应该不要害怕更改名字,就算是修改的工作量并不小,为了日后的更容易的阅读和维护,这是值得的。但是,如果这是一个API的名字,那我还是建议你不要改了,就算是你觉得这个名字烂得很。因为,当你的程序以API的形式发布后,会有N多的他人的程序依赖于这个名字,这个时候,兼容性和用户比什么都重要。

Frameworks和 Libraries

你的用户是一个程序员,他需要使用你的代码进行二次开发。 Namespaces 将会是你重点需要注意的东西。
  • 使用namespaces 而不是类的前缀
    希望你的编程序语言支持namespace,这样,你就可以使用它而不是在类名前面加前缀了。如果你所使用的语言不支持namespace,那么你应该上网看看其它程序员使用什么样的方式来区分自己的代码和别人的代码名字空间。
  • 使用普通的namespace而不是使用公司名
    使用公司名做namespace并不是一个好的相法,因为公司名很容易变更,比如,公司因为被收购,被控告,合并,重组等原因需要更名。产品的名字同样也会改变。所以,使用一个普通的namespaces会好一些。如STL,ACE等。

数据库

Database Schemas 意为数据模型,所以,其名字应该和其领域是合乎逻辑的,而不是为了编程的方便。
  • 数据表应使用复数
    别使用单数形式,这是因为在远古的ORM 中需要使用单数的形式来定义类名。而且,一个表中包含了许多行数据,所以也应该是复数的。如,”items“, “customers“, “journalEntries” 等等。,
  • 为那些包括派生数据或是日常处理的表使用aux_ 和meta_ 前缀
    这些表中的数据都是用来做为临时处理的,所以,你需要一个前缀或是后缀来使他们区别于实际的表。
  • 为主键加入表名
    如果你有一张表叫”driverLicenses” 而ID 列是主键,那么你应该把这个主键命名为”driverLicense_id” 而不是”id”。这样做的好处是,当你在连接两个表的时候,你不需要为主键指定表名,如: “driverLicense.id” 或”vehicle.id“,也不需要为其取别名。
  • 使用后缀来标识类
    这样的例子很多,比如:ISBN 和Dewey Decimal numbers,VIN等等.
    Joe Celko有一篇文章叫SQL Programming Style提到了下面这样的风格:
    _id主键
    _nbr字符串型的数位(有严格的规则,如:车牌号,身份证号,手机号等)
    _code标准化编码(如:邮编,ISO 国家编码)
    _cat种类名
    _class子集
    _type稍不正式的类名,比如,驾照中的,”摩托车”, “汽车”, and “出租车” 类型。

其它

  • 对于“物理上”的东西,命名其是什么,而不是做什么
    比如某些物理上的名字,姓名,性别,文件路径,网络链接,文件描述符,下标索引,类的属性,这些都是物理上的东西,所以,其名字应该是标识其是什么,而不是用来做什么。
  • 对于“逻辑上”的东西,命名其做什么,而不是是什么
    比如某些逻辑上的名字,函数名,数据结构,等。
  • 避免”Category” 问题
    千万别使用”Category” 作为你的属性名,因为,你会马上发现,这并不靠谱,因为这就等于什么没有说。与此相类似的还有”type” ,”kind” ,”variant” ,”classification” ,”subcategory” 等,对于这些名字,没人知道其是什么东西。而应该使用更为明确的分类,如: “FuelEfficiencyGrade”, “PackagingType”, “AgeGroup”, “Flamability”, “AllergenLevel”, 等等。
文章:来源
分享到:
评论

相关推荐

    [转载]程序命名的一些提示

    NULL 博文链接:https://hanz188.iteye.com/blog/568737

    C语言变量名命名规则

    例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。 3、对变量的定义,尽量位于函数的开始位置。

    发布的程序文件名写死了,一定要以CHXXWH命名

    的程序文件名写死了,一定要以CHXXWH命名。 1:主目录要设置成发布程序的路径 2:文档要添加内容文档 3:提示打不开网页的 主要是IIS中的Web服务扩展的ASP.NET v2.0.50727要点允许。 4: 安装IIS后无法显示XML页面 ...

    解决安卓应用程序未安装的三种方法

     解决方法:储存模式连接电脑找到SD卡目录下的.android_secure文件夹,里面应该会有一个smdl2tmp1.asec,也可能是其他名称,总之与正常程序命名格式明显不一样的文件,删除,再次安装软件,看看是不是好了。

    SQL2005 provider: 命名管道提供程序 error: 40 无法打开到 SQL Server 的连接

    (provider: 命名管道提供程序, error: 40 – 无法打开到 SQL Server 的连接)  解决方法:  1、确保使用连接的用户名和密码可以正确登录到SQL2005。    2、确保服务器端的数据库允许远程连接,登录SQL2005企业...

    C语言模拟闹钟功能程序

    (1)变量、函数命名符合规范。 (2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。 (3)程序的层次清晰,可读性强。

    程序设计规范.docx

    例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。 3、对变量的定义,尽量位于函数的开始位置。 二、...

    javascript 命名规则 变量命名规则

    提示: 匈牙利命名法是一位微软程序员发明的,多数的C,C++程序都使用此命名法。 JavaScript变量匈牙利命名类型 JavaScript变量起名类型 变量命名前缀 Array 数组 a Float 浮点 l Function 函数 f Integer...

    通用抽奖程序

    本程序可以实现对任何纯文本文件进行随机抽奖的功能,其中一等奖,二等奖,三等奖最多可以抽取100名,鼓励奖最多可以抽取1000名。总抽奖数量为1300人。样本的文本文件长度没有限制。 抽奖样本文件默认为当前目录下的...

    让程序作为服务运行(instsrv.exe srvany.exe)

    在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail则是你想添加...

    Android程序设计基础

    最终用户不再需要担心哪些应用程序是活动的,也不必在运行新程序前先关闭原有的一些程序。Android针对低能耗、低内存的设备进行了优化,这种根本性的优化是之前的平台从未尝试过的。  高质量的图形和声音。将类似...

    Code-Hint-Aggregator:用于解析您的专有 PHP 应用程序接口并编译所有命名空间、接口、类、类方法和参数及其相应代码类型提示的列表的实用程序,但没有任何源代码。 输出文件可以提供给承包商与 Eclipse(和 fork)一起使用,而无需提供您的专有代码库

    PHP 代码提示聚合器用于解析 PHP 应用程序类/函数库并编译所有命名空间、类、类方法和参数及其相应代码/类型提示的列表的实用程序,但剥离了所有实际的源代码胆量和其他文档。 目的是允许签约开发人员访问您的专有...

    随机显示图片程序(.net) 1.0.rar

    1.图片命名无任何限制 2.支持无限张图片随机显示 3.图片可打水印 4.完美解决ASP.Net重新生成图片失真的难题 5.可自定义字体大小 6.可自定义字体前景色、背景色 7.可自定义水印坐标位置 8.可自定义水印使用何...

    Python 程序设计-系统登录页面设计-thinkter

    Python 程序设计-系统登录页面设计-thinkter http://t.csdn.cn/Oy3QF 1、需求分析 系统要有管理员登录、普通用户登录和退出三个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user...

    自我体重诊断java程序

    所有代码写在一个类(class)里面,在类里面可以写函数的调用,要求变量命名规范,代码功能注释清楚,以及错误处理,达到程序只提示不报错。

    基于多线程的Linux聊天室系统

     用户程序命名为client.c;服务器程序命名为server.c  绑定端口等信息见实验方法内容;  要求client可以通过socket连接server  在client,提示输入服务器ip  若连接server 的socket建立成功,返回提示信息  ...

    数据库设计规范-命名规范.docx

    定期或不定期,库存数核算模块(检查完整性检测与修正)根据上月末的库存数(结存 数据表)、本月已发生数(业务数据表)检查当前的库存数(累计数据表)是否符合,不符合 则给出提示,可手工或自动进行更正(当前库存数=...

    快乐飞扬个人网盘程序 v1.3.9.rar

    程序优化特点 ... 文件目录保护不被下载 ...提示:目前对中文命名支持不好,有些环境下上传后不能显示中文.(建议用字母数字下划线组合命名) 名称中含有不允许的特殊符号命名的文件会自动过滤掉,只保留允许的字符.

    桌面提醒程序Ontime

    如果你想提示有背景那可以自己找张BMP图片,命名为OnTime.bmp,放在与程序同目录就行了. 1.普通运行: 可以打开程序,目录,网站,文件,和Windows运行一样,只是不能带参数 如: www.yryz.net d:\mp3\爱上你是个错...

    如何用vc++6编写1+2=3程序.txt

    提示:如果主程序界面找不到了怎么办?点击“Resour”再点击“Dialog”展开加号,再双击双击双击“IDC_MY...DIALOG” 四、给3个“Edit”建立3个成员变量。具体操作是:鼠标右键点击“Edit”、左键点击“建立类向导...

Global site tag (gtag.js) - Google Analytics