2017-10-07 34 views
0

Programming Language Pragmatics 4ed by Michael Scott說,Java和C#可以模仿C和C++頭文件:Java和C#如何模仿頭文件構造?

爲了模仿早期頭的軟件工程實踐網絡文件建設, Java或C#設計團隊可以創建的骨架版本(在公共類) 其包或命名空間,然後可以由並行和獨立地由負責完整版本的程序員使用。

是什麼意思:

  • 「創建(公共類) 其包或命名空間的骨架版本的」 使用,同時

  • 」獨立,由程序員負責完整版本「?

謝謝。

+0

它意味着它的意思。什麼是骨架?骨頭沒有任何肉,意味着只是最終完成版本的定義。即使肉的肉不存在,您也可以在開發過程中使用該骨架代替最終構造。 –

+4

這本書似乎沒有那麼有用。實際上,這可以通過定義Java接口(和一些數據對象),然後使用mock來處理客戶端來完成。 – chrylis

回答

1

「創建(公共類)的包或命名空間的骨架版本」

這意味着,設計者寫的一些或全部的實現細節丟失的Java或C#源代碼;例如接口

「由負責完整版本的程序員同時並獨立使用」?

這意味着程序員編寫了其餘的代碼。

1

這意味着創建沒有實現的類的版本。在C#中,通常的做法是讓所有成員拋出NotImplementedException。例如: -

public class Database 
{ 
    public IEnumerable<Employee> GetAllEmployees() => throw new NotImplementedException(); 
} 

雖然這種做法限制了你的設計在某些方面類似的方法將只創建接口,但沒有實現它們的類,例如:

public interface IDatabase 
{ 
    IEnumerable<Employee> GetAllEmployees(); 
} 

,例如您不能將其用於具有公共靜態成員的類型。

使用這兩種方法,其他程序員可以開始編寫使用Database/IDatabase的代碼,即使尚未完成實現。這種做法的一個問題是那些程序員不能測試他們的代碼,除非他們創建他們自己的測試實現(例如使用模擬)。

+0

謝謝。「你不能將它用於具有公共靜態成員的類型」是什麼意思?我有興趣瞭解這兩種方法之間的侷限性和優勢。 – Ben

+0

接口不能有靜態成員。所以,你不能使用接口作爲具有公共靜態成員的類的骨架,你需要使用沒有實現的實際類。 – svick