鲁迅说:嬉笑怒骂里充满了无奈和妥协。

小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协。

Code Review 是一场苦涩但有意思的修行。

(一)改掉这些坏习惯,还怕写不出健壮的代码?

(二)改掉这些坏习惯,还怕写不出优雅的代码?

(三)改掉这些坏习惯,还怕写不出优雅的代码?

(四)改掉这些坏习惯,还怕写不出健壮的代码?

代码修炼的系列分享,书接上篇,本次探讨一下:该如何利用注解写出精简的代码?

1. 编码时:重复的校验,随处可见。 

举个栗子:

再举个栗子:

如栗子示意,项目中参数校验随处可见,面对如此简单而又繁琐的工作量,你有何高见?

小猿招式一:七夕,带你生撸一个验证框架

小猿招式二:API参数如何验证?别纠结,拿去用就是

招式一不多说,徒手造轮子而已;重点说说招式二,引用 Hibernate Validator 类库替换参数校验,如下图示意,只需通过注解就轻松实现参数的基本验证。

建议:参数校验直接引用三方的类库实现,例如引用 Hibernate Validator,能让业务代码简化不少,代码 B 格略有提升。

敢问,你会用注解吗?注解还能怎么用?

莫急,容我慢慢讲来。

2. 编码时:注解还可以这么用。

举个栗子

系统要根据上面常量类中的商户号来判断:是否需要进行校验账户信息、是否需要进行通知商户 ... ...

实现方式有很多种,看看项目中采用注解怎么实现的。

首先定义 PayAccInfoValidator 注解,用来标注是否需要校验账户信息。

import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface PayAccInfoValidator {boolean verify() default true;
}

然后在商户号属性上加入注解标识。

采用反射+注解,编写验证工具类,主要关注代码中的关注点一、关注点二。

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;public class BusinessUtil {private static final MerIdConstant MERID_CONSTANT = new MerIdConstant();/*** 存放要验证支付账户信息的商户号*/public static final Map<String, Boolean> VERIFY_MERID_MAP = new HashMap<String, Boolean>();static {Class<?> clazz = MERID_CONSTANT.getClass();for (Field field : clazz.getFields()) {// 关注点一PayAccInfoValidator validator = field.getAnnotation(PayAccInfoValidator.class);if (validator != null) {try {// 关注点二VERIFY_MERID_MAP.put(field.get(MERID_CONSTANT).toString(), validator.verify());} catch (IllegalAccessException e) {}}}}
}

代码不做详细解释,工具类用起来很简单,简易示例如下。

程序输出:

20020:需要进行验证

另外,校验是否需要通知商户该怎么实现呢?其实套路是一样的,照葫芦画瓢而已,拿去先用起来体会体会。

3. 寄语写最后

在程序员的世界里,编写代码处处充满了无奈和妥协。不过还是那句话:我等采石之人当心怀大教堂之愿景

好了,代码修炼的系列分享,本次就谈到这里,一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!

(五)改掉这些坏习惯,还怕写不出精简的代码?相关推荐

  1. (六)改掉这些坏习惯,还怕写不出精简的代码?

    鲁迅说:嬉笑怒骂里充满了无奈和妥协. 小猿说:先生说的不对,在程序员的世界里,编写代码处处充满了无奈和妥协. (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? ...

  2. java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...

    Code Review 是一场苦涩但有意思的修行. (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? (三)改掉这些坏习惯,还怕写不出优雅的代码? 书接上篇, ...

  3. (三)改掉这些坏习惯,还怕写不出优雅的代码?

    Code Review 是一场苦涩但有意思的修行. 书接上篇,本次一起继续探讨一下,该如何写出优雅的代码? 1. 编码时:搞的复杂并不好  坏习惯一:多余的 if/else. 反例: 类似上面这种写法 ...

  4. (四)改掉这些坏习惯,还怕写不出健壮的代码?

    Code Review 是一场苦涩但有意思的修行. (一)改掉这些坏习惯,还怕写不出健壮的代码? (二)改掉这些坏习惯,还怕写不出优雅的代码? (三)改掉这些坏习惯,还怕写不出优雅的代码? 书接上篇, ...

  5. (二)改掉这些坏习惯,还怕写不出优雅的代码?

    Code Review 是一场苦涩但有意思的修行. 上期分享,通过示例剖析编码中一些经常触犯的性能点,以及编码时常犯的一些小毛病,来告诉新手程序员如何写出健壮的代码. 咱们书接上篇,本次一起来探讨一下 ...

  6. (一)改掉这些坏习惯,还怕写不出健壮的代码?

    Code Review 是一场苦涩但有意思的修行. 近期对团队负责的项目,进行了一次 Code Review,代码评审过程中遇到的那些编码坏习惯,笑的合不拢嘴.不过,评审中很多代码编写问题,以往都多次 ...

  7. 每月改掉一个坏习惯,遇见更好的自己

    -1- 有人说,人生不过是无数习惯的总和. 查尔斯·杜希格在<习惯的力量>中写道:「人每天的活动中,有超过40%是习惯的产物,而不是自己主动的决定.虽然每个习惯的影响相对来说比较小,但是随 ...

  8. 改掉这些坏习惯让你的学习效率升高

    IT产业的发展速度很快,所以必须不断地学习新的知识.如果您希望在web前端领域取得更好的发展,可以看这些的小建议 一.低效率的学习坏习惯 1.被动重复阅读一般初学者在学习web前端开发时,会倾向于购买 ...

  9. 工作中千万不要去做的事:9个需要马上改掉的坏习惯

    在改善行为上,"千万不要去做的事"总是比"一定要学会做的事"更有效率. 原因很简单,你不能做的事定义了你能够做的事.这里有9个办公室工作人员通常存在的习惯,而这 ...

最新文章

  1. Linux 设备模型之 (kobject、kset 和 Subsystem)(二)
  2. 20175221 2018-2019-2 《Java程序设计》第一周学习总结
  3. 将桌面文件动态保存到D盘
  4. 计算机编程之高级语言
  5. (转) mp4编码全介绍 (一)
  6. 机器人布罩_机器人防护罩的主要作用是什么?
  7. Ubuntu 安装远程桌面
  8. 在线下单系统php源码,PIMS在线订单管理系统v4.2.9
  9. linux 服务器时钟同步设置
  10. Apple Compressor 4.4.4 中文特别版 Mac 电影视频后期制作工具
  11. 【genius_platform软件平台开发】第七十三讲:linux系统驱动开发之-中断处理之DSB指令
  12. 推荐这几个阿里、抖音、快手超级牛逼的技术大佬的公众号!
  13. 如何提取王者荣耀模型
  14. JS 生成永不重复的随机序列号
  15. jQuery——小案例:点击图片放大缩小
  16. Java中if条件语句举例详解
  17. Win10家庭中文版开机后弹窗无法登录到你的账户点注销没用(解决过程记录)
  18. 2022-2028年全球植入前基因检测收入年复合增长率CAGR为 5.6%
  19. linux系统变双屏,Ubuntu Linux下双屏显示解决方案
  20. Android程序报错:Unable to add window——token android.os.BinderProxy@431e65b8 is not valid

热门文章

  1. JavaScript算法——快速排序
  2. Ubuntu vim界面的复制粘贴操作
  3. VUE的双向数据绑定原理
  4. javaweb网上购物系统设计与实现(开题报告+任务书+外文翻译+论文+源码).rar
  5. ME525软件测试自学,电脑通过WIFI连接摩托罗拉(defy) ME525上网的方法
  6. Lark XR 平行云-云渲染方案
  7. 软件开发及过程管理——理解高内聚-低耦合
  8. (附源码)springboot基于WEB的高校文档打印系统 毕业设计101004
  9. 杭州学计算机大学排名,我心目中的浙江高校排名
  10. web后端语言_C/C++作为web后端语言的缺点