猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫9 年前

12/2
10:47
计算机

也谈代码规范化

先说个事情:前段时间网编那边做了个专题,有个聚焦图效果插入专题中就不显示,跑来找我。我先用chrome打开,正常,换IE(11),聚焦图正常,打开开发者模式,渲染方式切换到IE7,聚焦图不显示,debug模式报错如下:

SCRIPT438: 对象不支持此属性或方法,文件: eval code (14),行: 1,列: 683,

对应的代码片段一部分,其中 a = arguments 报错

if (arguments.length > 1) {
     a = arguments
} else {
     if (g.C.isKdoms(p)) {
          return p
     } else {
          if (g.C.isarr(p) || g.C.isDoms(p)) {
               a = p
          } else {
               if (g.C.isstr(p)) {
                    a = /^n:(\w+)$/.test(p) ? _doc.getElementsByName(RegExp.$1) : _doc.getElementsByTagName(p)
               }
          }
     }
}

单独焦点图效果没问题,故问题应该不会出在上面这段代码上,估计是什么冲突了。文本编辑器打开专题页面,代码各种乱,不知道从哪个网站上面扒下来的,先大概浏览了下,把各种无用的脚本,多余的代码统统清理掉后,测试了下问题依旧。看来只有祭出大杀器了,删删删。随着页面代码不断删除,直到删掉这一行

<h2 id="a"></h2>

聚焦图效果正常了,看到这个代码,瞬间明白啥问题了。在低版本IE浏览器中,页面中id为a的元素,a就相当于document.getElementById(“a”),代码中arguments是个数组,a = arguments直接报错了。导致这个问题原因也很简单,网编为了方便,直接把各个锚点命名成a,b,c,d,e,…问题找到了,解决起来就方便了,直接让网编把所有的锚点都换成栏目拼音。

一个小问题,浪费了个把小时,太不值得,归根结底还是一个代码规范问题。对于一个网编来说,让她完全准守代码规范可能要求比较高了,但是对于一个开发人员来说,命名规范化,这点是最基本要求。

顺便说下另一个同事的事情,php开发人员,有一次我在检查他写的代码片,定义变量都是nimeide、madan、cao等等词语,果断打回去重写,写段代码至于带着这么多负面情绪在里面么。虽然这个小伙已经跳到新的单位,这种心态不调整,他的职业发展也不会这么顺利。

两年前我曾今去过一家单位,负责前端工作,由于各种原因,只待了一周的时间。入职第一天,除了基本的常规介绍,就是一份前端规范(网易的NEC规范,传送门),这个前端规范相对于一般的来说,样式命名书写更为复杂和繁琐,短短的一周2、3个页面完全按照规范来实施,虽然速度有点影响,一气写下来还是很舒畅的,而且后续的接手人员也不会觉得各种突兀,按着规范来很清楚各个部分代表什么意思。比较遗憾只待了1周,那个公司的网站目前看还是同行业里代码最优雅的,页面用户体验最好的。

以码认人,也不是不无道理的,一个代码写得优美规范的团队/个人,虽然技术能力不一定有多么多么的高端,至少是一个良好的开端,今后的发展不可估量。

关于各大互联网公司前后端规范,网上都能搜到,不在这里面列举了,有兴趣的可以自行搜索。

也谈代码规范化