2017-10-07 35 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