5.7 例子:HTTP响应中的默认值
Last updated
Last updated
HTTP项目还必须提供对生成HTTP响应的支持。学生们在这方面最常犯的错误是默认值不足。每个HTTP响应必须指定一个HTTP协议版本;一个小组要求调用者在创建响应对象时明确指定这个版本。然而,响应的版本必须与请求对象中的版本相对应,而且在发送响应时,请求必须已经作为一个参数被传递(它指出了发送响应的位置)。因此,HTTP类自动提供响应版本更有意义。调用者不太可能知道要指定什么版本,而且如果调用者确实指定了一个值,很可能导致HTTP库和调用者之间的信息泄露。HTTP响应还包括一个Date
头,指定响应发送的时间;HTTP库也应该为这个提供一个合理的默认值。
默认值说明了这样一个原则:接口的设计应该尽可能地使普通情况简单。它们也是部分信息隐藏的一个例子:在正常情况下,调用者不需要知道默认项的存在。在极少数情况下,如果调用者需要覆盖一个默认值,它必须知道该值,并且可以调用特殊方法来修改它。
只要有可能,类应该在没有明确要求的情况下“做正确的事情”。默认值就是这方面的一个例子。的Java I/O例子从反面说明了这一点。文件I/O中的缓冲是非常普遍的,任何人都不应该明确要求它,甚至不应该知道它的存在;I/O类应该做正确的事情,自动提供它。最好的功能是那些你甚至不知道它们存在的功能。