我在第一次了解到规约的时候是相当抵触的,因为规约这种东西我们自己写代码的时候往往是又用不上的,而写规约有需要占用额外的时间。这种想法到了第二次实验时有所改善,我想从我做第二次实验时的想法来谈谈我对规约的理解。
软件构造的第二次实验基本是个填空的过程,需要我们根据接口用两种方法来实现图。刚刚拿到实验模板的时候我完全不知道要做些什么,不知道接口中方法的具体功能,不知道方法输入参数的作用。但是规约很好的解决了这个问题。实验二中接口的每一个方法都提供了对应的规约,通过规约我们可以知道输入的参数是做什么用的,知道程序再某些特殊情况时该做些什么。比如在图中加入一组边的方法,规约中就明确给出了如果加入的这条边顶点不存在于图中,那么就把顶点加入图中。这是一条非常重要的规约,如果没有这条规约程序的行为就很可能完全不一样了。因为对以点驱动的图来说,加入定点不存在的边包括我在内应该有不少人觉得这种情况应该算是加入失败。但这条规约却否定了这种情况,使得不管是谁来编写这个程序都会使程序有着相同的行为。
之所以在这个情况下规约特别有效,是因为设计接口的人和实现接口的人不一样,实现接口的人不知道设计接口的人究竟想怎么样利用这个接口,而设计接口的人也不知道实现接口的人会怎么去实现这个接口。因而规约就派上了用场,设计接口的人设计规约,让程序员能够按照规约编写程序,使得程序不会产生朝三暮四的错误。
规约不仅对实现方法的人有约束,对使用方法的人也存在约束。规约的前置条件就是对这一行为的约束。
在我看来,规约最重要的作用就是解决了多人合作时行为不统一的问题。规约可以说是多人合作的后盾,合作中的每一个主体只要按照规约编写代码就不会在自己身上产生问题。