前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个简单的代码风格优化的小案例

一个简单的代码风格优化的小案例

作者头像
明明如月学长
发布2021-08-31 11:00:07
3030
发布2021-08-31 11:00:07
举报
文章被收录于专栏:明明如月的技术专栏

一、背景

最近 review 了一些代码,其中有一个函数的写法看着别扭,而且对应同学不太清楚还可以怎么优化。由于案例比较典型,值得分享一下。

本文给出对应的伪代码和自己的修改建议,并推荐可以提交代码质量的图书,以便能够帮助大家养成良好的编码风格。

二、伪代码

代码语言:javascript
复制
public void doSomething(){


// 构造参数(后无空格)

// 调用二方服务(后无空格)

if(result.success && result.getXXXMap() != null  && result.getXXXMap().get("aaa") != null){
// 执行一大段逻辑
}
}

存在的问题

  • 代码行数有点多
  • 构造参数、调用二方服务、结构判断并执行大段逻辑之前没有任何空行,导致看着不够清晰
  • if 判断部分搞得有些复杂,需要多看几眼才能看懂

三、修改

修改意见

  • 每个步骤中间加个空格,提升段落感
  • 将成功后的处理提取成一个独立的函数,降低函数长度
  • 将判断所需的map 提取成局部变量,让判断更加简洁
  • 将防御性判断写在代码执行之前,逻辑更清晰
代码语言:javascript
复制
public void doSomething(xxx){


// 构造参数(后空格一行)

// 调用二方服务(后空格一行)

	if(result.success ){
	     other();
	}
}


// other 只是一个demo, 实操时命名符合意图
private void other(yyy){
Map<K,V> map = result.getXXXMap() ;
if( null == map &&  null == map.get("aaa")){
  return;
}

// 执行业务逻辑

}

当然,如果有必要 前面的 result.success 也可以反向判断直接 return 。 这里的 “aaa” 只是一个举例,实际并不是简单的字符串,所以暂时不处理。 如果是普通字符串的话,建议定义为常量。

这样修改完毕可读性就提高了很多,代码非常清晰。

四、总结

这个案例非常简单,希望能够帮助大家养成良好的代码风格,提高代码可读性,让读者看起来更清爽。

另外《代码精进之路 从码农到工匠》中有提到【写代码是两次创作】

优雅的代码很少是一次形成的,大部分情况下要经过两次创造:第一遍实现功能,第二遍重构优化。

因此,实现功能以后,在代码审查阶段,如果有时间建议尽量对代码进行优化。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、伪代码
  • 三、修改
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档