4.2 接口中有什么?
Last updated
Last updated
一个模块的接口包含两种信息:正式的和非正式的。接口的正式部分在代码中明确规定,其中一些可以由编程语言检查是否正确。例如,一个方法的正式接口是其签名,其中包括其参数的名称和类型,其返回值的类型,以及该方法抛出的异常信息。大多数编程语言都确保一个方法的每一次调用都能提供正确的参数数量和类型以匹配其签名。一个类的正式接口包括其所有公共方法的签名,以及任何公共变量的名称和类型。
每个接口还包括非正式元素。这些元素不是以编程语言可以理解或强制执行的方式来指定的。一个接口的非正式部分包括它的高级行为,例如一个函数删除了由它的一个参数命名的文件的事实。如果对一个类的使用有限制(也许一个方法必须在另一个方法之前被调用),这些也是该类的接口的一部分。一般来说,如果开发者在使用一个模块时需要知道某些特定的信息,那么这些信息就是该模块的接口的一部分。接口的非正式方面只能用注释来描述,而且编程语言不能保证描述的完整性和准确性(见注解)。对于大多数接口来说,非正式的方面比正式的方面要大,要复杂。
明确规定接口的好处之一是,它准确地指出了开发者在使用相关模块时需要了解的内容。这有助于消除中描述的“未知的未知因素”问题。