最近被上司安排了一个任务,苦思冥想许久未想出比较好的设计,特来问下各位有经验的前辈,问题的详情如下
问题是关于一个导出功能的设计
业务描述:
整个导出业务分为了两个模块
一个模块 A 负责处理用户的操作以及从后台取数据(json 格式),但是导出时需要只取这些数据中的部分字段,取哪部分字段由模块 B 决定
一个模块 B ,需要根据模块 A 发来的参数返回需要取的“哪部分数据”,
如果 A 发来的导出参数是甲,则返回导出甲时需要取的 json 中的字段,举例有 19 个字段
如果 A 发来的导出参数是乙,则返回导出乙时需要取的 json 中的字段,举例有 20 个字段
这 19 个字段和 20 个字段之间有部分字段可能是相同的
限制
现在前面所说的导出参数总共有多达 19 种,后续还可能会拓展,每一种都需要十多个字段,我的想法是根据 A 发来的导出参数 switch , case 来返回需要的数据
按照我的思路来的话,这个模块 B 的代码会很长
上司的要求是,由于整个模块是单页面应用的设计,所有的模块都需要加载到客户端运行,所以上司要求我努力缩减这个模块 B 的大小,即代码行数等最优,经验有限,在网上也没找到类似的设计
只能来这里求助各位前辈了。。
1
RihcardLu 2016-12-06 10:50:50 +08:00 1
1. 从后台取出所有数据( A )
2. 导出选项展示给用户( A ?) 3. 用户选择导出部分数据(用户交互属于 A ,但你又说取字段由 B 决定,疑惑) 4. 导出数据( A ?) 不知上面的理解是否有误? 按照我的理解, A 负责处理数据, B 负责交互 1. 取数据( A ) 2. 导出选项( B ) 3. 用户选择( B ) 4. 传参给 A ,导出( A ) 至于你说的多 Switch 分支可以参考《代码大全》提到的表驱动法。 |
2
BinaryLeeward 2016-12-06 11:00:05 +08:00 1
B 模块搞一个配置 , 配置中 A 传过来的参数对应所需的字段, B 模块根据 A 传的参数从配置中取对应的字段,
B 模块有新增的参数时,加一行配置就行,不知道这种方式是否符号你的需求。 |
3
fuwu1245 OP @RihcardLu 唔。。
我觉得我的表达方式有问题,思考了下,可以精简为这个问题 一个函数接受一个参数,返回一个数组,参数的可能值有多个,且返回的数组都是纯常量字符串数组,如果返回的数组有部分是相同的,如何设计 这个函数使得代码行数最小? 看了下表驱动法,有点意思,研究下 |
4
fuwu1245 OP |
5
wshcdr 2016-12-06 11:23:53 +08:00 1
如果是单纯是要让 B 最瘦,让可以在 B 的数据源上向办法,把逻辑放到数据源上, B 就变成单独的简单转调
|