Fork me on GitHub

代码的优雅

前言

很早之前就想写这么一篇文章,苦于准备不足和时间有限吧,进度一拖再拖。

来到新公司差不多3个多月了,让我感到或者说受益比较大的可以说就是公司的代码风格吧。

估计也是由于有架构师的缘故,大家的代码质量感觉都比较高。

扯远了……

今天结合实际聊一下关于如何让代码变得规范、优雅吧。

正文

遵守规范

这一点或许可以说很笼统,目前大家除了遵守公司制定的一些规范,针对于Java我还比较建议的是阅读下阿里的《阿里巴巴Java开发手册》,H5前端的可以看看Github 上的这个规范http://alloyteam.github.io/CodeGuide/ ,也是蛮不错的。

必要的封装

当有一些重复,或者有共性的代码时,我们可以对它们进行包装。小到一些特殊的判断,大到常用的设计模式。

如下面的代码,实现相同的功能,明显第二种要好些。

upload successful

upload successful

这些必要的封装不仅可以减少一些额外的工作量,还能提高代码可阅读性。

一些工具包,如apache.commons 已经封装了一些通用校验,我们是可以直接拿来使用的。

学会占位符的使用

这一点打印日志比较常见到。如下:

upload successful

可以看到两者的输出是一样的,但是第一种是方便我们进行程序源码阅读的。

除了String.format里的%s占位符,log4j里的{}占位符也可以实现这种作用。

枚举和常量的使用

正确使用一些枚举和常量可以提高代码的阅读性。

比如我们创建一个水果枚举。

upload successful

upload successful

进行某些方法,这些方法更容易被阅读和维护。

异常的正确使用

或许你对异常不感冒,觉得有异常还要try catch是一件很费劲的事情,也影响代码美观,怎么会使代码优雅呢?

我们可以举个例子看一下异常的一种好玩的用法。

比如有一个业务逻辑,需要通过分布式接口获取其它数据,比如分三步:

upload successful

upload successful

upload successful

这种情况下每个Res我们需要判断成功,才能获取数据。

upload successful

即retCode为0000时。其它为失败。

这时候我们可以创建异常类。用于对retCode和retInfo进行接收。

upload successful

如果上面步骤中获取失败,直接上抛。

upload successful

最后可以使用try catch统一处理返回。

upload successful

还有一些异常的用法,在这里就不一一说明了。

必要时尝试使用多线程

可以在必要时使用多线程来提高程序运行效率。

对于上面的例子,查询可用余额,查询提现次数,查询银行卡信息相互之间是不影响的(他们的结果只取决于userId或者customerId的值)。我们可以使用Future获取结果,减少程序运行时间。

upload successful

使用多线程分别去请求获取结果,最后在进行处理。

结语

规范的代码不仅自己赏心悦目,别人看后也有所启发,养成编写良好代码的习惯,对自己、对别人都是有所帮助的。

其实最重要的还是多学、多练、多思考吧。




-------------文章结束啦 ~\(≧▽≦)/~ 感谢您的阅读-------------

SakuraTears wechat
扫一扫关注我的公众号
您的支持就是我创作的动力!
0%