[問題] 介面參數設計 (AOP)

作者: violet90079 (ˊ__>ˋ)   2017-02-21 20:20:18
各位先進好,小弟對介面參數設計上有些問題想請各
目前的案子架構,有切分很多系統別 (約莫17個子系統)
今天需要提供檔案給系統A,於是系統A的工程師開給我們了這麼一個介面供我們呼叫
public boolean importData(String serviceId,
String caseId, List<File> fileList);
今天系統A的工程師,說要用AOP記錄是哪個系統呼叫的,
於是所以要我們參數多傳一個 String 系統代碼,就變成下面這樣
public boolean importData(String systemCode, String serviceId,
String caseId, List<File> fileList);
但是這個新加的參數,在方法實作裡面完全沒用到,純粹為了AOP記錄系統代碼
請問各位怎麼看這設計XD
p.s 此介面僅供我們系統使用
p.s 系統A工程師說: 他們提供給別人呼叫的所有介面,都要加"系統代碼"這個參數
小弟學藝不精,難道這是一種特殊設計嗎?
感謝各位指點╭(─╴╴─)╮ ▃▇
作者: adrianshum (Alien)   2017-02-23 09:29:00
參考一下各logging lib 的MDC。不然就以其他方法提供這類資料吧。為了aspect 需要而改interface 某程度是違背了AOP 的用意
作者: ssccg (23)   2017-02-23 09:46:00
要設計成這樣不是不行,不過不覺得這叫AOP..對方應該是說改了這介面之後,他們在用AOP加上log程式時,才有所需的資訊,不然原本是根本沒這資訊,如果需求就是要那不管他們log實作是不是用AOP,都還是需要傳入這資訊你說方法實作沒用到,但log用AOP實作還是直接寫在方法裡是他的實作細節,跟你caller沒關係吧,如果你們之間已經確定依賴同一個log lib,那就如一樓所說的MDC如果就是獨立系統,那不管對方內部什麼用途,就是介面變更
作者: violet90079 (ˊ__>ˋ)   2017-02-25 18:49:00
問了很多人,大家都是說介面被汙染了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com