开发者社区> 明明如月> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 最近 review 了一些代码,其中有一个函数的写法看着别扭,而且对应同学不太清楚还可以怎么优化。由于案例比较典型,值得分享一下。 本文给出对应的伪代码和自己的修改建议,并推荐可以提交代码质量的图书,以便能够帮助大家养成良好的编码风格。
+关注继续查看

一、背景

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


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


二、伪代码


public void doSomething(){
// 构造参数(后无空格)
// 调用二方服务(后无空格)
if(result.success && result.getXXXMap() != null  && result.getXXXMap().get("aaa") != null){
// 执行一大段逻辑
}
}


存在的问题


- 代码行数有点多

- 构造参数、调用二方服务、结构判断并执行大段逻辑之前没有任何空行,导致看着不够清晰

- if 判断部分搞得有些复杂,需要多看几眼才能看懂



三、修改

修改意见

- 每个步骤中间加个空格,提升段落感

- 将成功后的处理提取成一个独立的函数,降低函数长度

- 将判断所需的map 提取成局部变量,让判断更加简洁

- 将防御性判断写在代码执行之前,逻辑更清晰


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” 只是一个举例,实际并不是简单的字符串,所以暂时不处理。

如果是普通字符串的话,建议定义为常量。


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


四、总结

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


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

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


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



另外推荐阅读《阿里巴巴Java 开发手册》、《重构 -改善既有代码的逻辑》、《代码整洁之道》,代码质量应该可以上升到一个新的台阶。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一个简单的小案例带你理解mysql中的事务
事务又叫做TCL,全称是transaction control language,意思是事务控制语言。这篇文章还是属于我的mysql基础文章,在前面我们介绍了下面这些基础知识: 1、数据库的增查改删操作 2、数据表的增查改删操作 3、数据的增查改删操作 3、数据的约束以及增查改删 5、Mysql中的内置函数 这篇文章还是基础系列的文章,主要是介绍mysql中的事务,为了保持文章的完整性,就算你没有看过之前的教程也没问题。
21 0
优化 JS 程序的一个小方法
优化 JS 程序的一个小方法
98 0
一个下拉框的赋值小案例
1.html文件 &nbsp;&nbsp;司法机构:   2.js方法 var getAgencyId=function(){ var agencyId=$("#chooseAgency option:selected").
640 0
一个sql的优化
原文:一个sql的优化 目的:为了查询某天某个服务器上的登录id的个数   刚开始编写的sql: select count(a.mac) logusers from Log_MacLogin_All a                 where isMoNi != 1           ...
617 0
一个简单的优化例子(锁问题)
 前一阵刚给同事做完一个tuning的培训,顺便把以前做过的case重新整理了一下,今天发出来。
626 0
+关注
明明如月
阿里巴巴 资深Java开发工程师
351
文章
1
问答
来源圈子
更多
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载