雅码轩专栏, 干货, 无废话!
词义优化
1. 见名知意
- 减少无意义变量名 , 例如
value
,map
,list
等这种变量名 - 减少一词多义与多词义一词的情况.
× 糟糕代码
// 支付
@Override
public void pay(Map dto){
var value = dto.getValue();
var map = dto.getMap();
// ...
}
// 评论
@Override
public void comment(Map dto) {
var value = dto.getValue();
var list= dto.getList();
// ...
}
此代码问题犯了变量名无意义的问题和一词多义的问题, value
这个变量在多个函数中出现, 无法第一时间推断他的含义, 则对于跟代码的人来说, 可读性不佳. 变量名混淆.
√ 优雅代码
// 支付
@Override
public void pay(PayDTO dto){
// 订单id
var orderId = dto.getOrderId();
// 表单数据
var formData = dto.FormData();
// ...
}
// 评论
@Override
public void comment(CommentDTO dto) {
// 用户id
var userId = dto.getUserId();
// 帖子ids
var postIds = dto.PostIds();
// ...
}
变量名见名知意, 无阅读压力
2. 变量名共识
任何业务模块中, 同一个实体应采用相同变量名, 形同共识.
× 糟糕代码
// 风控模块: 分析风控
@Override
public void analyze(){
// 查询所有风控信息
List<RiskVO> risks = findRisks();
// ...
}
// 模块隔离 /
// 用户模块: 上报风控
@Override
public void addRisk(AddRiskDTO dto) {
// 我的历史风控信息
List<RiskVO> histories = findRisksByUserId(dto.getUserId());
// ...
}
此代码中, 风控这个实体, 一会儿叫risks
, 一会儿又叫histories
, 变量名没有形成共识.
√ 优雅代码
// 风控模块: 分析风控
@Override
public void analyze(){
// 查询所有风控信息
List<RiskVO> risks = findRisks();
// ...
}
// 模块隔离 /
// 用户模块: 上报风控
@Override
public void addRisk(AddRiskDTO dto) {
// 我的历史风控信息
List<RiskVO> myRisks = findRisksByUserId(dto.getUserId());
// ...
}
在不同业务模块中, 变量名形成共识, 都叫risks
, 可以在前面增加定语, 例如:
我的风险信息: myRisks
失效风控信息: invalidRisks
严重风险信息: crucialRisks