阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 928|回复: 0

[转帖] 敏捷思维:代码验证

[复制链接]
  • TA的每日心情
    郁闷
    2012-3-7 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-1-4 11:52:29 | 显示全部楼层 |阅读模式
    要保证架构的波动和成功,应用代码对架构进行验证是一种实用的手腕。代码验证的中心是测试,特别是单元测试。而测试的根本操作思绪是测试优先,它是矫捷方法中非常重要的一项理论,是重构和波动核形式的重要保障。 面向对象体系中的代码验证 代码验证是保证优秀的架构设计的一种方法,同时也是避免呈现象牙塔式架构设计的一种措施。我们在上一篇波动化中提到说架构设计最终将会表现为代码的形式,因此运用形式化的代码来对架构进行验证是最有效的。 由于是代码验证,因此就离不开编写代码,而代码总是和详细的语言、编译环境毫不相关的。在这里我们主要讨论面向对象语言,代码示例采用的Java语言。应用面向对象语言来进行架构设计有很多的好处: 首先,面向对象语言是一种更优秀的结构化语言,比起非面向对象语言,它可以更好的完成封装、降低耦合、并允许设计师在笼统层次上进行思索。这些因素为优秀的架构设计提供了条件。 其次,面向对象语言可以允许设计师只关注在框架代码上,而不用关心详细的完成代码。当然,这并不是说非面向对象的语言就做不到这一点,只是面向对象语言的表现更优秀一些。 最初,面向对象语言可以进行很好的重用。这就意味着,设计师可以应用原有的知识、原有的软件体系,来解决新的成绩。 此外,应用Java语言,还可以获得更多的好处。Java语言是一种面向接口的语言。我们晓得,Java语言本身不支持多重集成,所有的Java类都是从Object类继承下来的。这样,一个继承体系一旦确定就很难再更改。为了可以到达多重继承的灵敏性,Java引入了接口机制,运用接口和运用笼统类并没有什么不同的地方,一个详细类可以完成多个接口,而客户端可以经过申明接口类型来运用,如下面这样: List employees=new Vctor(); 假设需求将Vctor换成LinkedList,那么除了上面的创立代码,其它的代码不需求再做更多的修正。而Vctor这个详细类除了完成List这个接口以外,还完成了Cloneable、Collection、 RandomAccess、Serializable。这阐明除了List接口之外,我们还可以经过以上所列的接口来访问Vector类。因此接口继承可以成为类继承的补充手腕,发挥十分灵敏的作用。同时又避免了多重继承的复杂性。但是接口中只可以定义空方法,这是接口的一个缺陷。因此在实践编程中,接口和笼统类通常是一同运用的。我们在Java的java.util包中看到Collection接口以及完成Collection接口的AbstractCollection笼统类就是这方面的例子。你可以从AbstractCollection笼统类(或其某个子类)中继承,这样你就可以运用到AbstractCollection中的缺省代码完成,由于AbstractCollection完成了Collection接口,你的类也完成Collection接口;假设你不需求应用AbstractCollection中的代码,你完全可以自己写一个类,来完成Collection接口(这个例子中不太可能发作这种情况,因为工具类的重用性已经完成设计的非常好了)。Java中有很多类似的例子。Java语言设计并不是我们讨论的重点,更加深化的讨论可以参看专门的书籍,这里我们就不作太多的介绍了。 以上花了一些篇幅来讨论面向对象设计和面向接口设计的一些复杂的预备知识。这些知识将成为代码验证的基础。接口和架构 这里的接口指的并不是Java中的Inte**ce的概念,它是广义的接口,在Java语言中详细表现为类的公有方法或接口的方法。在COM体系或J2EE体系中还有类似但不完全相反的表现。关于一个系统的架构来说,最主要的其实就是定义这些接口。经过这些接口来将系统的类联络在一同,经过接口来为用户提供效劳,经过接口来连接外部系统(例如数据库、遗留系统等)。因此,我们为了对架构进行验证的要求,张银匠就转化为对接口的验证要求。 对接口进行验证的根本思绪是保证接口的可测试性。要保证接口具有可测试性,首先要做的是对类和类的职责进行分析。这里有几条原则,可以提高接口的可测试性。 1、 封装原则 接口的完成细节应该封装在类的外部,关于类的用户来说,他只需求晓得类发布出的公有方法,而不需求晓得完成细节。这样,就可以根据类的共有方法编写相应的测试代码,只要满足这些测试代码,类的设计就是成功的。关于架构来说,类的可测试性是基础,但是光保证这一条还不够。


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表