每次做code review,先贤谆谆教诲便在耳畔响起:

“There are only two hard problems in Computer Science: cache invalidation and naming things.” —Phil Karlton

将发现的问题整理如下:

Hard Code

这个永远是容易发现,也是最容易出现的问题,主要集中在 :

  • 配置项

this.investmentList = [{
id: "ALL",
name: "All Investments"
}, {
id: "FE",
name: "ETF"
}, {
id: "FV",
name: "Insurance Product Fund"
}, {
id: "FO",
name: "Open-End Fund"
}, {
id: "SA",
name: "Separate Account"
}];
  • Labels

if (data.length == 0) {
//message hard code
this.showMsgBox("No valid manager data available for the strategy.", true);
this.hideBodyEl();
}
  • 逻辑标识

if (dataType == 1) { // dataType == what
//compare the number type
}

单var模式与多var模式

单var模式

在函数的顶部使用唯一一个var语句是非常推荐的一种模式,它有如下一些好处:

  • 可以在同一个位置找到函数所需的所有变量
  • 避免在变量声明之前使用这个变量时产生的逻辑错误(参考下一小节“声明提前:分散的var带来的问题”)
  • 提醒你不要忘记声明变量,顺便减少潜在的全局变量
  • 代码量更少(输入代码更少且更易做代码优化)

单var模式看起来像这样:


function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
// 函数体…
}

对于单 var 模式和多 var 模式,建议不做强行约定,但同一个文件里,风格必须一致。

命名规范

  • 引入外部资源

    • 应对引入的资源分组并以空行隔开,如mercury资源与mr资源,chartComponent资源与Grid资源,类与object...
    • 类名大驼峰,变量小驼峰,常量全大写
    • 不用给一些常用工具类起不同于exports的别名,如系统中是这样配置jquery,underscorejs

'jquery': {
deps: [],
exports: '$',
init: function() {
return this.$.noConflict();
}
},
'underscore': {
deps: [],
exports: '_',
init: function () {
return this._.noConflict();
}
}
  • 方法名

    • 方法名拼写错误,如restFilterOption..
    • 太多的方法名以draw,load开头,有些名字不是很顾名思义

方法参数不需要带下划线

这一点我还没查到具体文档,待讨论


renderUI: function(_el) { //_el => el
_el.append(HTML);
this.initParam();
this._loadRequestParam();
this.drawHeader();
this._tableTemplate = null;
this._tableData = null;
}

多用$el.empty().append(value),少用$el.html(value)

$().html(value) vs $().empty().append(value)比较

refs :

single-var-mode
html-vs-empty-append
requireJs-config
Airbnb JavaScript Style Guide

1st-code-review summary的更多相关文章

  1. Git Command之Code Review

    原文链接 准备 Step 1. Create a team and add a teammate Step 2. Create a repository with some content 应用 Cl ...

  2. 使用RBTool自动提交code review请求

    使用RBTool自动提交code review请求 前言 让我们回想一下手工提交review请求的过程: 首先得用 svn diff > filename.diff 生成diff文件. 然后输入 ...

  3. Code Review学习笔记

    一:Code Review的必要性 代码审查,可以帮助他人发现不足,也可以促进自己培养良好的编程习惯. 自我代码审查,可以在编码完成之后,对自己的代码进行整理,发现“味道不好”的代码,作进一步的调整. ...

  4. Jupiter Code Review Reference -- Jupiter代码审查工具使用参考

    Jupiter Code Review Reference -- Jupiter代码审查工具使用参考 (修改版) 原创 2010年07月06日 10:43:00 标签: 审查 / reference  ...

  5. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  6. Code Review 程序员的寄望与哀伤

    一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...

  7. Git和Code Review流程

    Code Review流程1.根据开发任务,建立git分支, 分支名称模式为feature/任务名,比如关于API相关的一项任务,建立分支feature/api.git checkout -b fea ...

  8. 如何搭建开源code review gerrit服务器

    搭建环境:Ubuntu 14.04 一.环境准备 1.Java环境 gerrit依赖,用于安装gerrit环境. 下载:jdk-7u79-linux-x64.tar.gz http://www.ora ...

  9. Code Review Tools

    Code Review中文应该译作“代码审查”或是“代码评审”,这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻 ...

  10. code review作业

    下面是对结对编程队友12061166 宋天舒的code review 五个优点: 1.代码的风格优秀,注释不多,但是必要的注释还是有的,比如: // 三种模式 // mode1仅统计单个单词 // m ...

随机推荐

  1. hdu 1009:FatMouse' Trade(贪心)

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. MQ的通讯模式

    1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一.一对多.多对多.多对一等多种配置方式,支持树状.网状等多种拓扑结构. 2) 多点广播:MQ适用于不同类型的应用.其中重要的,也是正 ...

  3. C调Lua

    转自:http://foredoomed.org/blog/2013/12/07/integrate-c-with-lua/ 我们在用C写程序的时候,很多情况下需要用到List,Map等集合,但是C是 ...

  4. c语言 struct 的初始化

    转自:http://www.cnblogs.com/silentjesse/archive/2013/07/30/3225212.html struct数据有3中初始化方法:顺序,C风格及C++风格的 ...

  5. jdbc、事务(Transaction)、批处理 回顾

    论文写的头疼,回顾一下jdbc,换换脑子 传统的写法: 1.加载驱动类 class.forname("jdbc类的包结构"); 2.获得连接 Connection conn=Dri ...

  6. Java配置环境变量、方法和原因

    首先,你应该已经安装了 java 的 JDK 了,笔者安装的是:jdk-7u7-windows-x64 接下来主要讲怎么配置 java 的环境变量,也是为了以后哪天自己忘记了做个备份 1.进入“计算机 ...

  7. javascript优化--08模式(代码复用)01

    优先使用对象组合,而不是类继承: 类式继承:通过构造函数Child()来获取来自于另一个构造函数Parent()的属性: 默认模式:子类的原型指向父类的一个实例 function inherit(C, ...

  8. mysql之对视图的操作

    1. 为什么要使用视图? 为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性.所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有 ...

  9. Codeforces Round #331 (Div. 2)

    水 A - Wilbur and Swimming Pool 自从打完北京区域赛,对矩形有种莫名的恐惧.. #include <bits/stdc++.h> using namespace ...

  10. netstat -an 提示:不是内部或外部命令

      输入cmd,点击确定按钮:   进入dos操作界面效果:   然后输入netstat -an 然后回车,查看端口: 5 如果输入:netstat -an,提示:不是内部或外部命令,也不是可运行的程 ...