程序员如何让你的变量名更加精确

发表于:2011-11-28 10:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:葡萄城控件技术团队    来源:51Testing软件测试网采编

关键点

  “别人还能把这个名字理解成什么意思?”通过不断的问自己这个问题来积极检查每一个命名。

  事实上,这种富有创造性的、不断尝试“错误理解”的方法,能够有效的发现歧义的命名,并修正它们。正如本文中的示例,我们将随时通过“骑驴看唱本 ——边走边瞧”的方式来 探讨所见到名字的误解之处,然后选取一个更好的名字。

  示例:Filter()

  假设写了一段代码来操作数据库结果的集合:

  results= Database.all_objects.filter("year <= 2011")

  那么,results包含什么数据呢?

  所有满足year<=2011的对象

  所有不满足year<=2011的对象

  问题的由来是从filter这个有歧义的词开始的,它没有清楚表达它的意思是“选取”还是“剔除”。因此,应该避免使用filter,它太容易造 成误解!

  如果这里想要的效果是“选取”,一个更好的名字是select;如果想要的是“剔除”,更好的名字则是exclude。

  为布尔值取名

  当为布尔值变量命名或者函数返回布尔值的时候,要特别注意真和假所表达出来的真实意思,这里就有一个很危险的例子:

  bool read_password= true;

  这句代码意思取决于当时怎么阅读的(没有其他的意思了),显然这里有两种截然不同的理解:

  需要读密码

  密码已经被读过了

  在这个用例下,做好避免用单词read,可以考虑使用need_password或者user_is_authenticated来代替。

  通常情况下,添加单词is、has、can或者should可以让布尔值的意思更加清晰易懂。

  比如说有个函数叫SpaceLeft(),乍一看,就会想到这个函数返回的值是数字。如果需要明确返回值是布尔值,一个更好的名字是 HasSpaceLeft()。

  还有,尽量避免使用反义短句来命名。例如:

bool disable_ssl= false;

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • juanna_ding
    2011-11-29 10:28:53

    是哦, 像JOBS一样追求完美

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号