[讨论] 给UI层的接口与底层的接口不一致,何解?

楼主: zzss2003 (brotherD)   2019-03-04 15:59:30
在一个系统中,UI层负责与网页互动、沟通;底层则负责处理资料、把处理完毕的资料送
给UI层。
在理想的情况下,UI层如果需要底层的参数,照理说应该只要呼叫一个function call,其
他的事情都不用做;同理,底层如果需要从UI层传回来的参数,应该也只需要呼叫一个
function call就好
在我的状况,UI层与底层的互动上出了点问题,我不太晓得原因出在哪,也不太清楚要怎
么解决问题,所以上来请教各位方法。
A: 负责写网页UI层的同事
B: 负责写底层的同事
但我们公司的情况却不是这样子...以我这例子,给UI层的接口(A写的)为:
https://ideone.com/Tf4Uwv
底层的接口(B写的)为:
https://ideone.com/lK0yxc
#note1: 要给网页User看的设定参数,但我在B的程式码中找不到此变量
#note2: A需要这些设定参数给使用者设定,但我没办法在B的程式码中找到这些变量
我的任务是负责填满以及储存这些变量
填满: 系统刚开机时,放入初始值到这个型别的变量,A再拿去用
储存: 使用者从网页上设定参数,A把参数放在这个型别的变量,我再把它拿到另一个变量
给B用
为了完成我的任务,我必须:
1. 去问A: 为什么这些#note1的参数你没有打在你的结构里面,这些参数我有在B的程式码
里面看到,还是因为这些参数并没有要显示在网页上? 还是你少打?
2. 去问A: 那你这些note2多打的是什么? 是用来呈现在网页上的吗? 还是因为你自己要记
录一些资讯,所以才跟这些参数放在一起?
3. 去问B: 为什么有些A打的参数,我在你的程式码里面找不到,还是你没有统一放在一起
,而是放在别的file里面?
4. 去问A/B: 为什么你跟B/A用的型别不一样? 为什么不统一?
4. 去问A/B: 为什么你跟B/A写的参数用不一样的名字?
总之就是要当一个中间者,负责A跟B双方之间的沟通,我才有办法了解双方的逻辑,并不
能单纯透过程式码就完成我的任务。
请问一下,会造成这个情况,是因为发生了什么问题? 程式没有模组化? 没有统一的spec?
没有做information hiding?
麻烦各位前辈了~谢谢
作者: longlongint (华哥尔)   2019-03-04 16:23:00
先问 A B 吧,自己乱猜容易悲剧。 推测 A偏向使用者在UI产生的第一手资料,给人类看的; B 偏通讯或硬件限制,给机器看的。先问字段意义 能转换的就转 不能转的请他们帮忙补
作者: james732 (好人超)   2019-03-04 17:24:00
应该要明确定义出两者的interface/function要长什么样子
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-03-04 17:53:00
真的把程式当国文在读。你这个情况在各自为政的开发团队内称为“正常”接别人的API也很容易发生。
作者: james732 (好人超)   2019-03-04 18:17:00
物件导向可能会有帮忙,但也可能越帮越忙 XD最重要的还是两边设计的沟通与协调
作者: bluesoul (忙死你老爸)   2019-03-04 18:53:00
A B需要直接对话
作者: CoNsTaR ((const *))   2019-03-04 19:16:00
底层和UI考虑的点本来就不一样,适合的 representation也就不一样,不然怎么会需要你来做两个之间的 mapping... 不要自己做不出来就想着砲别人有问题啊
作者: longlongint (华哥尔)   2019-03-04 19:22:00
跟问字段对应跟数值范围 例如u16存float要 byte 照存还是乘以一千再存之类的
作者: IhateOGC (我讨厌)   2019-03-04 23:58:00
后端存的是真值,前端太常改变,例如打折到底要显示几位先累加再打折还是先打折再累加,这个如果还要传到后端这样的话User会觉得你们家网页效率很差A应该是把值接回来后才转型填入struct
作者: firejox (Tangent)   2019-03-05 02:06:00
把A B都抓来开会

Links booklink

Contact Us: admin [ a t ] ucptt.com