快速业务通道

冒号和他的学生们(连载27)——接口服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
能保证预期的效果。至于他人代码是否有效杜绝了一切可能的漏洞,那是监管软件质量的负责人的职责。”

引号表示理解:“这就好比客户购买了一款产品,却不按使用说明书进行操作,由此而引起的一切后果,厂家概不负责。”

“就是这个理儿。”冒号轻锤桌面,“当然事物是一分为二的。生活中有一个司空见惯的现象:许多行人跨越护栏、横穿马路。一方面,行人应该遵守交通规则,不应破坏道路的‘封装性’。另一方面,有些交通设计者没有‘以人为本’的客户意识,为行人提供的斑马线、天桥或隧道之间相距过远。从客观上说,不够完备的服务是导致行人违规的一大诱因。”

冒号和他的学生们(连载27)——接口服务(2)

时间:2011-07-03 BlogJava 郑晖

此言显见深得人心——几乎人人都当过道路封装的破坏分子。

冒号接着问:“提个问题:当你们在使用一个类或其中的某个方法时,对其用法存疑,即使阅读注释文档也无济于事,怎么办?”

叹号顺嘴说道:“看源代码呗。”

“看源代码是一种很好的学习和借鉴他人的方式,但不宜作为用法参考。”冒号否定道,“且不说源代码有可能无法获取,既便能够,从中提炼出的用法也不一定可靠,更何况具体实现随时可能变化。再打个比方,如果你不清楚如何设置一个闹钟,应该去看看说明书。如果说明书仍不解决问题,最好询问厂家,而不是揭开闹钟的后盖去研究它的运行机制,即使你真是个钟表行家。”

“所以应该直接咨询代码的作者。”逗号发现,过早抢答往往会掉入老冒的陷阱。这回学乖了,等叹号落坑后才胸有成竹地应招。

“方向正确!”冒号肯定后再次考问,“对方应以何种方式回答?”

“可以口头,也可以书面啊。”逗号答毕,隐隐觉得还是着了道。

果然,冒号摇摇头:“正确的做法是,对方应通过改进并提交的文档来解释。该过程可多次循环,直至问题解决。只有这样,主客双方的代码维护者——包括当前的和将来的——才能真正受益。”

问号深究:“但假如无法联系到原作者呢?比如包括JDK库在内的软件?”

冒号回答:“除了盗版的商业软件,都应该能联系到原作者。当然,如果与作者使用的不是同一源码控制库,上述做法也是可以变通的。好在无论是JDK库,还是正规的第三方软件,文档注释应该都足够清晰,许多还会提供示例代码。如果这些还不能让你明白,要么是该软件不值信赖,也就没有重用的价值;要么是你自身的理解问题,只有求助有识之士了。”

句号体会到:“由此可见,封装的代码不仅要屏蔽客户代码的访问,最好还能屏蔽客户代码开发者的访问。这样既鼓励代码作者多写规范文档,又鼓励代码用户多读规范文档。一切以规范为中心,而不以源码实现为中心。”

“非常好的建议!”冒号竖起拇指,“访问控制只是个玻璃罩,能防止乱动的双手,却防止不了偷窥的双眼。它至多只能维护语法上的封装和信息隐藏,而语义上的封装只有靠规范来维护。对程序员而言,前者是一种需要学习的知识,后者是一种需要培养的素质。”

叹号觉得脑子里仍是半清半浊:“能举个语义上违反封装的例子吗?”

冒号爽快地接受请求:“第一个例子是上节课谈到对象封装时作为反例的User类,其中getBirthday直接返回了内部域birthday的引用。如果你在调用getBirthday后对返回值进行修改,就是一种违反封装的行为。”

叹号有些愕然:“那不是User类本身首先违反封装原则的吗?”

冒号食指微扬:“不错,User类的作者错在授人以隙,而你错在乘

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号