2

公共方法

当我们写一些公共组件或方法时,我们可能需要接收外部的参数,但是,我们并不总能保证我们的注释是完全能让他人理解的。

/**
 * 获取所有考评员信息
 * @param   {district}    区域
 * @param   {department}  部门
 * @param   {discipline}  学科
 */
self.getAllExaminerInfoByDistrictAndDepartmentAndDiscipline = function(district, department, discipline) {
    // 设置请求参数
    var params = {
        districtId: district.id,
        departmentId: department.id,
        disciplineId: discipline.id
    };
    // 请求后台接口,返回
    return $http.get(baseUrl, { params: params });
};

错误使用

就像上面的这段代码,属于在Service中的公共方法,乍一看,可能看不出什么错误,我们注释写得好好的,我要个什么什么对象,用的时候传给我就好了。

编码常有失误,如果他人不小心传了个undefined进来。

var params = {
    districtId: district.id,
    departmentId: department.id,
    disciplineId: discipline.id
};

然后我们这段代码就是从undefined中获取属性,就会抛出错误。

当然,以软件工程师的骄傲,他不是先考虑自己哪里写错了,而是认为你这个公共的方法有问题,然后找写这个方法的人进行激烈地讨论,浪费了半个小时发现原来是参数传错了。这严重地影响了开发的效率。

参数校验

所以我们的公共方法既要写注释,让人能看懂,也要对每一个传入的参数表示“怀疑”。

公共方法,可能会有很多人使用,为了减少参数传错造成的时间浪费,所以我们需要在我们的逻辑真正地执行之前,对传入的参数进行校验。

我们可以对这几个传入的区域、部门、学科对象进行校验。

if (!district) {
    throw '未接收到区域信息';
}

这样,如果我们没有传该参数或传入一个undefined,我们的控制台就会报错,提示开发者“未接收到区域信息”。

clipboard.png

这样,开发者就能准确而快速地定位错误,自己这个方法用错了,并且根据提示,是自己的区域信息传错了,这就减少了互相争论与讲解的成本。

公共方法随手throw一条提示信息,节约程序员debug的万千时间。


张喜硕
2.1k 声望423 粉丝

浅梦辄止,书墨未浓。