编码习惯-函数编写建议

Locale locale, MessageSource messageSource) {

Map<String, Object> data = new HashMap<String, Object>();

try {

String name = (String) params.get(“name”);

String value = (String) params.get(“value”);

//示例代码,省略其他代码

}

catch (Exception e) {

logger.error(“add config error”, e);

data.put(“code”, 99);

data.put(“msg”, messageSource.getMessage(“SYSTEMERROR”, null, locale));

}

return data;

}

​​​​​3 有明确的输入输出和方法名

尽量有清晰的输入输出参数,使人一看就知道函数做了啥。举例:

public void updateUser(Map<String, Object> params){

long userId = (Long) params.get(“id”);

String nickname = (String) params.get(“nickname”);

}

上面的函数,看函数定义你只知道更新了用户对象,但你不知道更新了用户的什么信息。建议写成下面这样:

public void updateUserNickName(long userId, String nickname){

}

你就算不看方法名,只看参数就能知道这个函数只更新了nickname一个字段。多好啊!

这点只可意会不可言传。

4 把可能变化的地方封装成函数

编写函数的总体指导思想是抽象和封装,你要把代码的逻辑抽象出来封装成为一个函数,以应对将来可能的变化。以后代码逻辑有变更的时候,单独修改和测试这个函数即可。

这一点相当重要,否则你会觉得怎么需求老变?改代码烦死了。

如何识别可能变的地方,多思考一下就知道了,工作久了就知道了。比如,开发初期,业务说只有管理员才可以删除某个对象,你就应该考虑到后面可能除了管理员,其他角色也可能可以删除,或者说对象的创建者也可以删除,这就是将来潜在的变化,你写代码的时候就要埋下伏笔,把是否能删除做成一个函数。后面需求变更的时候,你就只需要改一个函数。

举例,删除配置项的逻辑,判断一下只有是自己创建的配置项才可以删除,一开始代码是这样的:

/**

  • 删除配置项

*/

@Override

public boolean delete(long id) {

Config config = configs.get(id);

if(config == null){

return false;

}

// 只有自己创建的可以删除

if (UserUtil.getUser().equals(config.getCreator())) {

return configs.remove(id) != null;

}

return false;

}

这里我会识别一下,是否可以删除这个地方就有可能会变化,很有可能以后管理员就可以删除任何人的,那么这里就抽 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 成一个函数:

/**

  • 删除配置项

*/

@Override

public boolean delete(long id) {

Config config = configs.get(id);

if(config == null){

return false;

}

// 判断是否可以删除

if (canDelete(config)) {

return configs.remove(id) != null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值