前言
学习了软件构造课,学习了规约spec,与以往编程不同,spec的学习让我更加深刻理解了一个合格的程序员应该做些什么,而不是跟学校完成作业一样只去思考如何实现要求
一、spec是什么?
写在方法前面的说明性注释,用来解释方法的功能、参数、返回值等
二、spec是如何构成的
1.总体示例
代码如下(示例):
/**
* Add, change, or remove a weighted directed edge in this graph.
* If weight is nonzero, add an edge or update the weight of that edge;
* vertices with the given labels are added to the graph if they do not
* already exist.
* If weight is zero, remove the edge if it exists (the graph is not
* otherwise modified).
*
* @param source label of the source vertex
* @param target label of the target vertex
* @param weight nonnegative weight of the edge
* @return the previous weight of the edge, or zero if there was no such
* edge
*/
在idea编译器中,当你定义了一个函数,在函数上方输入/**后直接回车就能生成规约的模板
2.方法的功能
根据上面示例可以看出,没有@符号的那一段解释了方法的功能,在这个示例中是添加,改变,删除一个带权有向边,同时告诉了各种情况的结果。
3.方法的前置条件
@param后面的就是方法的前置条件,实质上是方法的参数+参数的限制条件,在规约中,一旦满足了前置条件,方法的实现一定要满足后置条件
4.方法的后置条件
@return后面即为方法的后置条件,实质上是方法的返回值。但是规约的存在,更像是程序员之间的承诺和信任,如果你给我提供符合前置条件的参数,那么我就能给你提供正确的后置条件,你无需明白具体是如何实现的,只需要放心使用即可
总结
规约在我看来就是一种契约,你提供我要求的,我就提供你需要的,在实际使用中,规约的编写也能方便使用,如idea中如果将鼠标悬浮在方法上,就能明确的显示方法的参数,用法,也许自己编写的时候会觉得麻烦,但是会极大方便日后使用