暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
谈谈代码——如何避免写出糟糕if...pdf
56
23页
1次
2024-08-07
免费下载
2020/2/27 谈谈代码——如何避免写出糟糕if...else语句
https://mp.weixin.qq.com/s?__biz=MzU0MTczNzA1OA==&mid=2247484683&idx=1&sn=3a68138c5a817a823d728411e1ec25ad&chksm=fb242c…
1/23
谈谈代码——如何避免写出糟糕if...else语句
原创 泊浮目·沃趣科技 沃趣技术
作者 泊浮目·沃趣科技研发工程师
出品 沃趣科技
在写代码的日常中,if...else语句是极为常见的。正因其常见性,很多同学在写代码的时候并不会去思考其在目前代
码中的用法是否妥当。而随着项目的日渐发展,糟糕的if...else语句将会充斥在各处,让项目的可维护性急剧下降。
故在这篇文章中,笔者想和大家谈谈如何避免写出糟糕if...else语句。
由于脱密等原因,文章中的示例代码将会从一些开源软件摘抄或者经过抽象的生产代码挑选出来作为示范。
| 问题代码
当我们看到一组if...else时,一般是不会有什么阅读负担的。但当我们看到这样的代码时:
private void validate(APICreateSchedulerMessage msg) {
if (msg.getType().equals("simple")) {
if (msg.getInterval() == null) {
if (msg.getRepeatCount() != null) {
if (msg.getRepeatCount() != 1) {
throw new ApiMessageInterceptionException(argerr("interval must be set when
use simple scheduler when repeat more than once"));
}
} else {
throw new ApiMessageInterceptionException(argerr("interval must be set when use
2020/2/27 谈谈代码——如何避免写出糟糕if...else语句
https://mp.weixin.qq.com/s?__biz=MzU0MTczNzA1OA==&mid=2247484683&idx=1&sn=3a68138c5a817a823d728411e1ec25ad&chksm=fb242c…
2/23
simple scheduler when repeat forever"));
}
} else if (msg.getInterval() != null) {
if (msg.getRepeatCount() != null) {
if (msg.getInterval() <= 0) {
throw new ApiMessageInterceptionException(argerr("interval must be positive
integer"));
} else if ((long) msg.getInterval() * (long) msg.getRepeatCount() * 1000L + msg
.getStartTime() < 0 ) {
throw new ApiMessageInterceptionException(argerr("duration time out of rang
e"));
} else if ((long) msg.getInterval() * (long) msg.getRepeatCount() * 1000L + msg
.getStartTime() > 2147454847000L) {
throw new ApiMessageInterceptionException(argerr("stopTime out of mysql tim
estamp range"));
}
}
}
if (msg.getStartTime() == null) {
throw new ApiMessageInterceptionException(argerr("startTime must be set when use si
mple scheduler"));
} else if (msg.getStartTime() != null && msg.getStartTime() < 0) {
throw new ApiMessageInterceptionException(argerr("startTime must be positive intege
r or 0"));
} else if (msg.getStartTime() != null && msg.getStartTime() > 2147454847 ){
// mysql timestamp range is '1970-01-01 00:00:01' UTC to '2038-01-
19 03:14:07' UTC.
// we accept 0 as startDate means start from current time
throw new ApiMessageInterceptionException(argerr("startTime out of range"));
}
if (msg.getRepeatCount() != null && msg.getRepeatCount() <= 0) {
throw new ApiMessageInterceptionException(argerr("repeatCount must be positive inte
ger"));
}
}
if (msg.getType().equals("cron")) {
if (msg.getCron() == null || ( msg.getCron() != null && msg.getCron().isEmpty())) {
throw new ApiMessageInterceptionException(argerr("cron must be set when use cron sc
heduler"));
}
if ( (! msg.getCron().contains("?")) || msg.getCron().split(" ").length != 6) {
throw new ApiMessageInterceptionException(argerr("cron task must follow format like
this : \"0 0/3 17-23 * * ?\" "));
}
of 23
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜