[討論] 給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