Java基础、中级、高级、架构面试资料

如何写出健壮的 Java 代码!

JAVA herman 2134浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

如何写出健壮的 Java 代码?我相信这是很多人都有的疑惑或者想要的答案。今天我们抽个时间一起探讨一下!

说实话,看到这个问题我也不知道如何回答为好!所以我也需要答案!

于是我就去百度,谷歌。各种搜索,寻找各种编程技巧和学习方法。搜索之后,发现网上的很多结论都不太理想,于是就需要我自己去思考,去探索如何让自己写的代码更健壮!

没有答案之后,我就换了一种想法。Spring 框架大家都在使用吧,Spring 框架肯定也都和健壮吧,于是我就是 Spring 框架中寻找答案!

当然,绝不仅仅是 Spring 框架,还包括其他一些框架的源码。多去看它们的源码,去寻找答案。

下面我总结一些关于代码健壮的相关建议。

第一个,我发现 Spring 框架源码中存在各种各样的断言。Assert.isNull()、Assert.notNull()、Assert.state()、Assert.isTrue()、Assert.notEmpty() 等。

他们把非常多的 if 判断是否为空,参数是否合法等都给封装起来了,代码显的非常简洁。

尽管 Spring Assert 与其他框架的名称类似,如 JUnit 或其他框架,但其实没有任何共同之处。Spring Assert 不是为了测试,也不是为了调试,而是为了方便校验一些参数。

int speed = 0;
Assert.isTrue(speed > 0, "speed must be positive");
String state = "";
Assert.state(state.equals("stop"), "car must be stopped");
Assert.notNull(state, "state mustn't be null");
Assert.isNull(state, "to replace battery the charge must be null");
Assert.isInstanceOf(String.class, state,"www.xttblog.com");
Assert.isAssignable(String.class, Object.class,"www.xttblog.com");
String key = "";
Assert.hasLength(key, "key must not be null and must not the empty");
Assert.hasText(
    key,
    "key must not be null and must contain " +
        "at least one non-whitespace character");
Assert.doesNotContain(key, "123", "key mustn't contain 123");

除了上面这些,Spring 框架中的很多工具类,你会发现里面有很多的静态方法。这个类要么是 final 类型的,然后构造函数私有化。要么就是一个抽象类 abstract。你以后的写的类中全是静态方法的话,就可以这样做。

另外还有一些 PO、VO、DO 等类要分清楚它们各自的用途。不然会扯出不少的水平权限漏洞和垂直权限漏洞。

不能把自己程序的健壮性建立在别人代码正确的基础上,这种依赖如果成了习惯,会麻痹自己的警觉性。要做到即使是别人错了,我们的程序依然能正常运行。使用别人的参数,必须要自己在校验一遍。最常见的就是前端做了校验,后端不做校验。

对于调用的方法中如果有异常抛出,尽量要自己 try–catch 语句块,以防发生非预期的结果。

给每个 if(condition){} 都加上大括号,即使里面只有一句话。阿里巴巴 Java 开发规范手册中明确强调的。

常量类中,尽量写一些内部类,把常量进行区分。很多常量类中的常量高达上百个,没有一点归类。

千万别自己随意的重复造轮子,多用一些框架中自带的工具类。

没有不努力的天才。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 如何写出健壮的 Java 代码!