不规范变量名的痛处和一点补救

原文链接:zhoupq.com

  变量与函数的命名对于大多数开发人员来说,绝对可谓一个痛处。不规范的命名往往是词不达意,经常会被搅得一头雾水,不仅影响开发效率,还拖慢了整个项目进度。

  就我接触的老项目来说,不规范的命名比比皆是。现在出现这么一种情况,一个事物对应多种变量名。“开始日期”就有三种表现形式——sDatestartDatefbrqBegin,并且在同一套业务、甚至在同一个方法中混搭使用。我最后选择了 startDate 作为新业务逻辑的变量名,startDate 也是我新增的。

 // 老方法,接收参数名:fbrqBegin
function fun1(numm){
    var startDate = $("input[name='sdate']").val(); // 开始日期
    var endStart = $("input[name='edate']").val();
    var url="${path}/web/xxx"+numm+".tag?fbrqBegin="+startDate+"&fbrqEnd="+endStart;
    ……
};

 // 新方法,接收参数名:sdate
function fun2(numm)
{
    const startDate = $("input[name='sdate']").val(); // 开始日期
    const endStart = $("input[name='edate']").val();
    const url="${path}/web/xxx"+numm+".tag?sdate="+startDate+"&edate="+endStart;
    ……
};复制代码

  不只是 “开始日期”,还有“厂商”(csmcvendor)、“产品”等都拥有多种变量名。

  若觉得有问题,要么重构,要么延续。先说说重构,此处的重构更确切说应该是改善代码可读性,重构是一种理想行为,因为它往往需要大量时间,改善代码可读性的同时,还需要不断地调试,以确保不会因为重构而引起其他模块出现bug。必须提的是,重构不列入工作绩效,在项目制软件行业,不存在重构的说法,只有能不能用。所以,你需要利用业余时间去做这些事,做得好,也许会被口头奖励,没做好,出现了意外的bug,并且没有及时修复,下个季度的绩效估计就不好看了。

  当然,不管最终结果如何,重构一定会提升我们的技术水平,对自己的技术发展来看,是稳赚不赔的生意。可是你有时间去重构吗?你真的愿意冒着吃力不讨好,甚至降绩效的风险?难道不能写开源软件来提升技术吗?这是一个自己内心的博弈。我接触了好几个项目,越做到后期,对老代码的吐槽就越少,因为我越来越理解当时的开发人员遇到的尴尬境地,最后他们也许选择了延续,或者小范围的重构。以上只针对传统软件行业项目制而言。互联网公司的产品,那就必须反复打磨,精益求精!

  最后,我也选择了在业余时间进行可控范围内的重构,毕竟项目交付时间不会因为重构而延期。即使得不到物质好处,但我为了提升点技术,以及看不惯混乱的场面,当手上的代码存在引起bug的风险,我就要及时弥补。将新业务模块的参数统一规范化:

 // 新方法,接收参数名:startDate
function fun2(numm)
{
    const startDate = $("input[name='sdate']").val(); // 开始日期
    const endStart = $("input[name='edate']").val();

    // 将接收参数名改为:startDate
    const url="${path}/web/xxx"+numm+".tag?startDate="+startDate+"&endStart="+endStart;
    ……
};

 // fun2(numm) 对应的 servlet
 String startDate = request.getParameter("startDate");复制代码

  不能重蹈蔡桓公的覆辙:

  居十日,扁鹊望桓侯而还走。桓侯故使人问之,扁鹊曰:“疾在腠理,汤熨之所及也;在肌肤,针石之所及也;在肠胃,火齐之所及也;在骨髓,司命之所属,无奈何也。今在骨髓,臣是以无请也。”
  居五日,桓侯体痛,使人索扁鹊,已逃秦矣,桓侯遂死。

  ——摘自《扁鹊见蔡桓公》复制代码

  我的变量名除了专有名词之外,不使用拼音,并且很少用不通用不常见的缩写,基本是常见的单词缩写或者全拼。这里说一个印象比较深刻的单词——Count

Count
-----------------------------
英文简称 : CT
中文全称 : 计数
所属分类 : 医药卫生复制代码

  而 CT海词缩略语)也很有可能是其他单词的缩写:

其他解释
CT : Central Time   中央标准时间
CT : ComuniÓn Tradicionalista   ComuniÓn Tradicionalista
CT : Court   v. 献殷勤, 追求, 招致危险
CT : Carat   n. 克拉, 开(以纯金为24开表示金含量的单位)
CT : Counseling and Testing   咨询和检测
CT : Computer Technician   电脑技术员
CT : Cholera Toxin   霍乱毒素复制代码

  CT 被排除了,它的确很少在程序中表示 Count,其他缩写 CNT海词缩略语):

CNT的常用相关缩略词条,共有 1 条。
------------------------------------------------------------------------
CNT : Count
中文全称:记数,记数器
词条简介:记数,记数器

CNT的其他相关缩略词条,共有 19 条。
------------------------------------------------------------------------
CNT:Country   n. 国家
CNT:Carbon Nano Tube   碳纳米管
CNT:Celestial Navigation Trainer   天体导航训练设备
……复制代码

  在百度百科中 CNT百度百科) 解释如下:

CNT的英文全称是Carbon Nanotube。中文名称是碳纳米管,与金刚石、石墨、富勒烯一样,是碳的一种同素异形体。复制代码

  CTCNT 都容易造成歧义,直接用 Count。在我看过的文档中,多数大公司也推荐如此。

版权声明:转载请注明出处 zhoupq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值