博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有意义的命名
阅读量:6950 次
发布时间:2019-06-27

本文共 1927 字,大约阅读时间需要 6 分钟。

选个好名字需要花时间,但省下的时间更多。

一旦发现有更好的名字,就换掉旧的。

名副其实

名称应该已经答复了所有的大问题,如它为什么会存在,它做什么,怎么用。尽量让名字不需要注释来补充解释说明。

例1

public List
getThem(){ List
list1 = new ArrayList
(); for (int[] x : theList) if(x[0] == 4) list1.add(x); return list1;}

代码足够简洁了,但意思却很模糊。

此为扫雷程序,theList是盘面,每个单元格都用一个简单数组表示,零下标表示状态值,4 表示“已标记”。

public List
getFlaggedCells(){ List
flaggedCells = new ArrayList
(); for (int[] cell: gameBoard) if (cell[STATUS_VALUE == FLAGGED) flaggedCells.add(cell); return flaggedCells;}

避免误导

除非它真的是List类型,否则别用accountList表示一组账号,用accountGroup

XYZControllerForEfficientHandlingOfStrings与XYZControllerForEfficientStorageOfStrings很相似,容易混淆。但这种以同样的方式拼写同样的概念的命名方式配合线代编辑环境的代码自动补全功能可以很大程度地方便编程。需要做好权衡,用XYZControllerForEfficientStringsHandling和XYZControllerForEfficientStringsStorage,将差异点放在末尾,让差异更明显,减小混淆。如果放至末尾很别扭,就只好保留,编程时多注意。

做有意义的区分

要区分名称,就要以读者能鉴别不同之处的方式来划分。

避免以数字序列命名

public static void copyChars(char a1[], char a2[]){    for(int i =0; i< al.length;i++){    a2[i] = a1[i]    }}

应该将参数名改为source和destination

public static vod copyChars(char source[], char destination[]){    for(int i = 0;i

避免废话

ProductInfo或ProductData名称虽不同,意思却相同,都是Product。变量aDog、theDog都是dog。

避免使用类型、作用域编码

Variable不应出现在变量名中,Table不应出现在表名中,NameString并不比Name更好,CustomObject也不比Custom更好。

现代编程语言具有丰富的类型系统,编译器也强制使用类型,所以匈牙利语标记法和其他类型编码形式都纯属多余。不必用m_前缀来表明成员变量,应当把类和函数做得足够小,消除对成员前缀的需要。使用某种可以标注成员变量的编辑环境。

其他建议

类名应该是名词或名词短语,函数应该是动词或动词短语。

每个抽象概念(如get、set、controller)对应一个词,并且一直使用它。使用fetch、retrieve、get给不同类的同种方法命名,不如都用get。同一堆代码中有controller、manager、driver就会令人困惑。实际上它们一样,不如全用controller或全用driver。

避免将同一个命名用于不同目的,不同的抽象概念。多个类中有add方法,表示通过增加或连接两个现存值来获得新值,同时某个类的方法要实现把单个参数放到集合中,这个方法就不能叫add,应该用insert或者append。

只有程序员才会读你的代码,所以计算机术语、算法名、模式名、数学术语尽情用。对于熟悉访问者模式的程序员来说,名称AccountVisitor富有含义。

转载于:https://www.cnblogs.com/StephenChou/p/8066485.html

你可能感兴趣的文章
移动分发端 基础统计指标经典业务代码节选--二次激活用户
查看>>
“一夜成名”需要多久?他花了20年!
查看>>
strcmp函数使用中的一些细节问题
查看>>
DB2下载
查看>>
安全狗云备份爆笑段子~~~如果上天再给我一次机会
查看>>
分布式系统设计之DB类(来自深空老大)
查看>>
Linux内核中的信号量解析
查看>>
浏览器滚动条默认样式改变
查看>>
GitHub上README写法暨markdown语法解读
查看>>
SpringMVC相关
查看>>
正则表达式
查看>>
谈谈python的from __future__ import absolute_import
查看>>
关于MARATHON和容器的端口映射
查看>>
php通过header发送自定义数据
查看>>
云时代必备 CDN 技能包
查看>>
仿大众点评下拉菜单实现
查看>>
eclipse根据wsdl文件生成webservice客户端
查看>>
java实现验证码生成工具类
查看>>
webComponent初体验
查看>>
关于Apache的25个初中级面试题
查看>>