多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
`审核人:白占宁` `被审核代码负责人:李伟 & 舒曼` `代码地址:https://192.168.1.240:8443/svn/repos/wanda` ### 存在的问题 #### 1、关于null的判断 ``` if(name == null){ groupData = [xsData, xzData] nameDat = ['xingshi', 'xingzheng'] } ``` 解决方案:使用`!`运算符,如下: ``` if(!name){ groupData = [xsData, xzData] nameDat = ['xingshi', 'xingzheng'] } ``` #### 2、代码可读性差 ``` $('.nav li:eq('+index+')').siblings().removeClass('active').end().addClass('active') ``` 解决方案:添加必要的空格,必要的时候换行,如下: ``` $('.nav li:eq(' + index + ')') .siblings() .removeClass('active') .end() .addClass('active') ``` #### 3、代码缩进问题 ``` switch(index) { case 0: //将地图数据显示为刑事、行政数据 // all.renderMap(mapData, null) $('#allMap .xingshi, #allMap .xingzheng').stop().fadeIn(); $('.all-map').removeClass('all-map-big') $('.all-wrap').stop().show(function(){ $('.all-wrap').addClass('act-animated') }) $('.all-map .cutline').stop().fadeIn(); break; ``` 解决方案:请参考《JavaScript编码规范》进行正确的缩进,如下: ``` switch(index) { case 0: //将地图数据显示为刑事、行政数据 // all.renderMap(mapData, null) $('#allMap .xingshi, #allMap .xingzheng').stop().fadeIn(); $('.all-map').removeClass('all-map-big') $('.all-wrap').stop().show(function(){ $('.all-wrap').addClass('act-animated') }) $('.all-map .cutline').stop().fadeIn(); break; ``` #### 4、尾部分号不统一 ``` $('#allMap .xingshi').stop().fadeOut(); $('#allMap .xingzheng').stop().fadeIn(); $('.all-map').addClass('all-map-big') ``` 解决方案:要不统一全部加,要不全都不加分号,建议统一不加尾部分号。 #### 5、代码注释与下一个方法之前留一个空行 ``` /** * 左上角刑事和行政总数 */ renderCaseTotal:function(data) { var xsTotal = data.xstotal var xzTotal = data.xztotal $('.all-case-cri .all-case-value').html(xsTotal); $('.all-case-offi .all-case-value').html(xzTotal); var maxValue = xsTotal - xzTotal > 0 ? xsTotal : xzTotal; var xsxzArr = [xsTotal,xzTotal]; xsxzArr.map(function(value,index) { $('.all-num .all-progress').eq(index).css('width',Math.ceil(100 * xsxzArr[index] / maxValue) + '%') }) }, /** * 案件类型 */ renderCaseType:function(data) { var config = { width: 460, height: 260 } gradientAreaChart.drawCharts('#allTypeChart', data, config) } ``` 解决方案:在第一个方法结束后,留一个空行。 #### 6、data如何是数组,则循环方式有问题 ``` for(var d in data){ NewData.push({'name': nameData[i], 'value': data[d]}) i++ } ``` 解决方案:`for in`用于循环对象,不适用循环数组。可以使用传统的`for循环,map或forEach`等。 #### 7、方法注释不规范 ``` /** * 刑事案件强制措施 */ renderCriminalMeasure:function(data) { var measureHtml = Handlebars.compile(measureTpl) $("#criMeasure").html(measureHtml(data)) }, ``` 解决方案:使用编辑器插件,配置统一的注释,至少包括方法描述、参数说明、返回值这三部分,最好能够再添加上参数示例,如下: ``` /** * @description 将原始数据转换成D3图表组件 waterBall能直接用于渲染的数据 * @params {array} data 参数说明 * @return {array} 计算后的数组 * 原始数据例子:[ * { * name: "治安", * value: 55 * } * ] * 转换后:[[[55,45],['治安']]] * 注:第一个数组两个值合起来是100,第一个值是D3渲染值 */ getAcceptTypeData:function(data) { var renderData = []; data.map(function(item,index) { renderData.push([ [item.value,100 - item.value], [item.name] ]) }) return renderData; } ```