|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。客岁,我们已入手下手在会商Spec#,这是一个基于C#的撑持经由过程左券来举行计划的言语。以左券来计划是构建于诸如静态范例化如许的观点之上的,特定的举措只要在编译时被考证以后才干实行。左券一般利用前置和后置前提的情势来暗示,好比一个参数或前往值永久不克不及为空大概只能包括某个特定局限的值。为了不闪开发职员进修全部诸如Spec#如许的新言语,微软正在构建一个自力于言语的函数库,能够被任何.NET言语所使用。在某些方面,左券看上往相似断言,不外它们实质上存在十分年夜的区分。左券经由过程静态代码剖析的组合来完成,它能被用于编译器外部和内部,和测试框架当中。它们也能被实行,这意味着它们在运转调试版本的时分和断言很相似。让我们来看第一个例子:- stringGetDescription(intx){Contract.Requires(x>0);Contract.Ensures(Contract.Result()!=null);
复制代码 假如只看署名,开辟职员只能取得静态范例的信息“GetDescription请求输出一个整数并前往一个字符串”。而经由过程附加左券,开辟职员和工具都能够晓得“GetDescription请求输出一个正整数并前往一个不克不及为空的字符串”。除显式的左券以外,左券反省器也撑持隐式的左券。一个例子就是被零除如许的情形。假如一个类包括一个整数除法,个中的除数是一个变量,那末所有的代码路径都必需包管这个变量不会为零大概会激发一个告诫。假如在这类情形中的变量是一个开放类的属性,那末它也会请求反省每一个子类。关于非联系关系化空值和数组索引也存在一些隐式左券。为了让左券计划更简单,还存在一个ObjectInvariant办法的观点。这个出格的办法只包括左券,能够被注进到每一个办法挪用的开端以包管对象的形态坚持分歧。要侧重注重的是,这个工具要使用到一切办法当中,包含那些来自于其他程序集的子类。别的一个节俭工夫的功效是容易对旧值的会见。鄙人面的例子中,Ensures左券被用于联系关系OldValue语法以断定汇合的数量属性是递增的。- PublicSubAdd(valueasObject)Contract.Ensure(Count=Contract.OldValue(Count)+1)
复制代码 固然左券是写在办法之上的,不外它能被编译器主动地移到Return语句之前。因为必要一些体系开支来存储Count的旧值,反省器的这类排序操纵只在调试编译版本中产生。为了撑持函数库开辟职员,公布版本包括了一个援用程序集。比方,Widgets.dll程序集具有的大批左券被提取和安排到了程序集Widgets.Contracts.dll中。这同意客户端开辟职员在使用由函数库开辟职员创立的左券时,仍是能利用更快的公布编译版本。一个更风趣的特征是左券不单单能使用于实践的函数,乃至没有其他完成细节的接口和笼统办法也能具有左券。这是经由过程创立这个接口的一个援用完成来完成,这个援用完成的独一目标就是持有左券。而这个援用完成则经由过程特征以毗连回接口。关于左券的内容没有任何限定。因为不异的左券能够用于静态和运转时反省历程,以是,一个不克不及被评价的束缚大概仍旧同意被其他的反省。左券也能被文档天生器提取为文档信息。关于.NET4中的左券的更多信息,能够细心浏览PDC大旨讲话的前半部分。检察英文原文:.NET4FeatureFocus:CodeContracts
本文出自:http://www.infoq.com/cn/news/2008/12/Code-Contracts
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊? |
|