2019独角兽企业重金招聘Python工程师标准>>>
当前场景:
用户分类注册:现有用户类型(type),1为管理员用户,2为普通用户。根据来自前台的type,针对用户类别进行注册。
代码如下:
public void userOperation(HttpServletRequest request) {
String type = request.getParameter("type");
if (type != null && type != "") {
if (type == "1") {
// 授予管理员权限
// 赋值、数据交互等操作
} else {
// 只是普通用户
// 赋值、数据交互等操作
}
} else {
// 只是普通用户
// 赋值、数据交互等操作
}
}
可见有一部分重复。进行判断,当type为空时,判为普通用户;当type不为空时,再次进行判断:当type为1时,判为管理员用户,否则判为普通用户。
这是站在参数的角度,单纯地根据参数的取值来进行判断,阅读者需考虑四种情况。
优化方案:
可以优化判断条件,减少代码量,提高程序效率,增强易读性。
public void userOperation(HttpServletRequest request) {
// 只是普通用户
// 赋值、数据交互等操作
String type = request.getParameter("type");
if (type != null && type != "") {
if (type == "1") {
// 授予管理员权限
// 赋值、数据交互等操作
}
}
}
如此,先进行统一操作(默认普通用户);当type不为空、type为1时,改判为管理员用户。
这是站在判定结果的角度,根据用户最终的判定结果来进行判断。这样,对参数type的取值进行了分类(共两类,管理员用户是一类,普通用户是另一类),相当于减少了分支的情况(阅读者只需考虑两种情况),易读性强。
程序是写给人看的,也是写给机器看的,但归根结底是要给人看的,因为机器必然能看懂。在讲究团队开发的时代,别人能看懂是非常重要的。