软件构造之为什么需要规约

规约在团队合作中扮演关键角色,如同合同确保实现者满足需求,客户端依赖其执行。明确的规约能避免因不同理解导致的错误,提高代码可读性和维护性。Java中的规约通常通过注释形式存在,尽管静态类型声明提供部分检查。规约涵盖行为等价性、参数和返回值的说明,并指导如何处理空引用。规约不应涉及局部变量或私有字段,与测试相互补充,帮助定义可变方法的行为。
摘要由CSDN通过智能技术生成

什么是规约

规约是团队合作的关键。它就像一个合同:实现者负责满足合同的要求,使用该方法的客户端就可以依靠这个合同。事实上,就像真正的法律合同一样,规约对双方都有要求:当一个规约具有前提条件时,客户端需要满足这个前提条件;当客户端满足这个前提条件时,我们的方法需要满足合同中提出的要求。

为什么需要规约

在程序中最严重的bug产生于两个代码块之间交互时不同的行为之间的误解。虽然每个每个程序员心里都记着一个规约,但不是所有的程序员都把它写了下来。如果在一个团队里,不同的程序员心里有不同的规约,但都没有把它写下来时,当程序崩溃的时候,我们很难发现错误出现在哪里。而代码中的精确规约可以避免这一问题,从而免去我们不知道去哪里修改程序的痛苦。此外,规约对使用该方法的客户端是有好处的,因为他们省去了我们去读代码的任务,就可以知道这个方法要实现什么样的功能。

下边是一个例子,他的代码如下:

客户很容易读懂BigInteger.add这个方法的规约,它将两个BigInteger类型的数据进行相加。如果我们有的只有这些代码,我们要从头开始阅读BigInteger类中的构造函数,subtract函数,compareMagnitute函数才能明白这个函数要实现什么功能。

规约对一个方法的实现者有很多好处。因为它给了实现者改变方法内部的具体实现方法并且不用告知客户的自由。同时它也可以使编程变得更快,使用较弱的规约可以排除某个方法可能被调用的某些状态,这些在输入上的限制可以允许方法的实现者跳过代价昂贵并且不必要的检查,并且实现更加有效。             

规约的行为就像是客户端和实现者之间的防火墙。它允许客户机不受该单元工作细节的影响——如果在一个方法之前有一个规约,我们就不需要读取这个方法的源代码来明白这个方法需要实现的功能。它也允许实现者不需要考虑客户端使用这个方法的细节 ——该方法的实现者不需要问客户他们准备怎么使用这个方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值