软件构造实验心得之关于设计方法的思考

博客讲述了在实现FriendshipGraph的getDistance方法时遇到的问题,该方法在连续调用中由于未重置成员访问状态导致错误。作者意识到,方法的正确性不仅依赖于内部逻辑,还需考虑调用上下文。解决方案是在方法结束前恢复所有成员的初始状态,以避免前一次调用的影响。这个例子强调了在编程中考虑方法间交互的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在lab2中,当我运行FriendshipGraph的测试文件时,提示我不通过

提示我结果为-1

把前一行注释掉并设置断点,进行debug

发现当返回dis时,dis的结果是1

经过分析后发现,每调用一次getDistance(Person sta,Person end)方法,在执行广度优先算法时,会把一些成员标记为访问过,而当调用结束后却没有把所有成员重新标记为为访问过,因此上一次对getDistance(Person sta,Person end)的调用会影响下一次调用的结果。

解决方法是当方法返回前,把所有成员的标记重置为未访问过。

 

 其实并不是什么复杂的东西,但是有让我思考的地方:

我的getDistance(Person sta,Person end)方法单看内部实现没什么问题,但是一个方法的正确与否并不仅仅局限于其内部逻辑本身,还应考虑方法与方法间的关系。当连续调用多次getDistance(Person sta,Person end)方法时,如果不考虑调用的方法之间的关系,没有把每个成员的标记重置,即使方法内部代码的逻辑完全正确,程序也是错误的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值