2012-12-27 102 views
1

當你編寫程序時,存根總是指同一件事嗎?如何知道什麼是存根?

「存根提供對象,方法,或 功能的替代實現,以消除外部依賴。存根 單元和組件測試過程中通常使用的。如果你想 編寫單元測試和需求將簡單的調用替換爲數據庫, 外部庫(例如文件I/O)或其他系統API,可能非常適合您的需求。「

我認爲存根和骨架只在CORBA中,但這裏有一個存根,是相同的事物/概念嗎?當「stub」出現在相當不同的編程模型(RMI和MIPS相當不同)中時,一個coiincidence或者一個連接都具有稱爲「stub」的概念/東西,我也知道RMI/CORBA有一些稱爲骨架但是也可以有一個沒有骨架的存根或什麼?

例如,當main被翻譯成彙編時,它在這裏被稱爲stud,並且是否存在與該stub的連接,骨架用於網絡編程,比如CORBA,還是沒有連接,儘管兩者都被稱爲stub?

movia r8,stub # source 
movia r9,0x800020 # destination 
ldw r10,0(r8) # read 
stw r10,0(r9) # write 
ldw r10,4(r8) # read part 2 
stw r10,4(r9) # write 
ldw r10,8(r8) # read jump 
stw r10,8(r9) # write 
... # initialize others 

上面的代碼是存根的一個例子嗎?如果是這樣,什麼是骨架或不適用?

感謝您的信息。

+2

這是一個非常通用的編程術語。只要看看維基百科的文章:http://en.wikipedia.org/wiki/Method_stub –

+2

我不知道是否有一個真正的定義,但上面的東西聞起來像一個存根給我。一個同義詞可能是一個包裝。 –

+3

存根是一個通用術語,並非特定於任何語言或平臺或環境。你所引用的通用定義幾乎涵蓋了它,爲了測試的目的,或者甚至爲了分發某些東西,你可以使用一個存根來關閉一些你並沒有真正使用或者想要僞造的不會干擾的懸掛接口,或者像你引用的定義是測試界面。 –

回答

1

CORBA和RMI存根是一個非常具體的對象,它在本地表示某個遠程對象。該對象存在於服務器端,存根存在於客戶端。存根實現相同的接口(具有相同的工作方法),將所有調用轉發給遠程對象,同時接收返回的結果和異常。存根類通常通常會自動生成。

存根通常具有不同的含義(這只是完成一半,通常只是足以使代碼編譯但不能正常運行)。