手把手教你去除项目中的重复代码(一)—注解+反射处理接口通用逻辑

  • Post author:
  • Post category:其他




一. 前言

我们都知道代码的可维护性是一个项目是否成熟的重要指标,而提升可维护性的一个重要方法就是减少项目中的重复代码。如果项目中存在多处重复代码,当出现bug时,我们必须同时修改所有出现重复功能的代码,很容易遗漏,这也就是代码的“坏味道”之一“

散弹式修改

”。

散弹式修改(Shotgun Surgery)类似 发散式变化(Divergent Change),但恰恰相反。如果每遇到某种变化,都必须在许多不同的类中做出许多小修改,你所面临的坏味道就是散弹式修改(Shotgun Surgery)。如果需要修改的代码散布在四处,你不但很难找到它们,也很容易忘记某个重要的修改。

那么我们应该怎么来消除这些重复代码呢?接下来几篇文章会通过实际案例来分享下消除重复的经验。

本篇为第一篇文章,接下来的两篇链接如下


手把手教你去除项目中的重复代码(二)—注解+反射实现通用的日志打印功能



手把手教你去除项目中的重复代码(三)—模板+策略模式消除 if…else 和重复代码



二 . 利用注解 + 反射消除重复代码



一.需求描述

假设银行提供了一些 API 接口,对参数的序列化有点特殊,不使用 JSON,而是需要我们把参数依次拼在一起构成一个大字符串。

  1. 按照银行提供的 API 文档的顺序,把所有参数构成定长的数据,然后拼接在一起作为整个字符串。
  2. 因为每一种参数都有固定长度,未达到长度时需要做填充处理:

– 字符串类型的参数不满长度部分需要以下划线右填充,也就是字符串内容靠左;

– 数字类型的参数不满长度部分以 0 左填充,也就是实际数字靠右;

– 货币类型的表示需要把金额向下舍入 2 位到分,以分为单位,作为数字类型同样进行左填充。

  1. 对所有参数做 MD5 操作作为签名(为了方便理解,Demo 中不涉及加盐处理)。

比如,创建用户方法和支付方法的定义是这样的:

在这里插入图片描述

在这里插入图片描述

代码很容易实现,直接根据接口定义实现填充操作、加签名、请求调用操作即可:



版权声明:本文为qq_32590703原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。