多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
`审查人:白占宁` `被审核代码负责人:舒曼` `代码地址:https://192.168.1.240:8443/svn/repos/source-analysis` ### 存在的问题 #### 1、使用传参数的形式代替全局变量(已修改) ``` /** * 公用变量 */ var comChoiceName = '' //传过来的名称 var comStartTime = 0 //传过来的开始时间 var comEndTime = 0 //传过来的结束时间 var comElement = '' //要素名称 var comOption = 0 //选择库 var comPagSize = 10 //每页展示数量 var comCurrentNum = 1 //表的当前页数 dosageTotal: function() { var self = this request.sendAjax(baseConfig.dosageTotal+'/'+comStartTime+'/'+comEndTime+'/'+0+'/'+1, function(data) { var rankData = [data.cjlTop, data.sylTop] drawing.rankingDraw(rankData) self.scrollUp('scrollUp','66',60,0) }) } ``` 解决方案:尽量减少全局变量的定义,各个方法需要的数据通过参数传递进去。 #### 2、不符合基本的代码规范(已修改) ``` if(r!=null)return decodeURIComponent(r[2]) ``` 解决方案:参考《JavaScript编码规范》。 #### 3、注释不完整(已修改) ``` /** * [获取传参] */ parameters: function(name){ var search = window.location.search var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = search.substr(1).match(reg); if(r!=null)return decodeURIComponent(r[2]) return null } ``` 解决方案:完整的注释应该包括方法描述、参数说明和返回值说明。 #### 4、使用传递的参数前,先判断类型是否符合预期(未修改) ``` /** * [设置列表] */ setCustom: function(data, setStatus){ var setListHtml = Handlebars.compile(setListTpl) var allData = []//全部值 $('.pop-page-main ul').empty() data.forEach(function(d, i){ // ... ``` 解决方案:如果参数data是`undefined`或`null`或`string`类型,则程序就会报错,应该先判断参数类型是否符合预期,然后再使用参数值。 #### 5、对空字符串的判断方式(已修改) ``` if($(this).val() == '') ``` 解决方案:`if(!$(this).val())` #### 6、第三方类库的位置(已修改) `jquery.shapeshift.js`属于第三方类库,应该放到`sea-modules`目录下面。