`
庄表伟
  • 浏览: 1138363 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于DBC的一些思考与讨论

阅读更多
今天与buaawhl讨论DJ语言的事情时,对于DBC有了更深入的思考与认识。
 
具体的讨论过程就不描述了,说说我的思考的结论吧。
 
1、检查
DBC的核心是检查、更加严格的检查。这其实是强类型语言之后,进一步的增强。
一段程序,不但应该通过注释告诉别人,自己需要什么数据,自己能够做些什么。
更应该直接用代码进行强制的检查,这样的说明效果会更好,程序运行也会更加稳定。
 
2、对于检查的分类
a.类型检查:仅仅对于输入数据与返回数据的类型进行检查
b.前置检查:检查输入数据的合法性——是否合格,可以认为是更加严格的输入类型检查,但是还可以包括多参数的关联检查。比如,假设A为True,则B必须大于10,否则,B必须大于20。这样的复杂前置检查条件。
c.后置检查:检查返回数据的合法性——是否符合预期。这个预期其实也有两个级别,一是首先要符合返回类型定义,二是要符合输入数据的实际情况。
d.测试用例:这是更为严格的,也更为灵活的检查。前面的三种检查都可以在运行期始终起作用,而测试用例,则只需要运行通过一次即可。
 
3、DJ所能支持的DBC形式
a.更好的类型检查机制,不再基于模模糊糊的命名继承推导,而是基于实实在在的逻辑判例。
b.由于能够支持复杂判例的类型定义,因此可以实现前置条件定义的重用。但是对于“多参数关联的前置检查,则并不适用”,在我看来,如此复杂的前置条件,根本就应该正儿八经的写在方法的正文里,而不是搞复杂的前置检查。
c.后置检查,通过check:和checkMethod:支持。
d.通过test:支持。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics