在调用另一个函数时触发另一个函数
本文关键字:另一个 函数 调用 | 更新日期: 2023-09-27 18:22:25
public void ScoreFirstBall(int pinsKnockedDown) {
if (IsStrike(Frame, pinsKnockedDown)) {
Score = "X";
ScoreMessage = "Good Job";
} else if (IsGutterBall(pinsKnockedDown)) {
Score = "0";
ScoreMessage = "You'll do better next time";
}
PinsTotal += pinsKnockedDown;
}
public void ScoreSecondBall(int pinsKnockedDown) {
PinsTotal += pinsKnockedDown;
}
问题:
在这种情况下,我希望每次运行
ScoreSecondBall(...)
或ScoreFirstBall(...)
时都调用PinsTotal += pinsKnockedDown
。所以我想把它放在一个函数中(将来可能会扩展到很多行(。这样做效率高吗?因为我们有一个线程在调用函数时侦听。
感谢您阅读我的问题,如果不清楚,只需发表评论,我会:)修复它
您可以重构该代码以仅使用一个接受附加参数的ScoreBall()
函数:
public void ScoreBall(int pinsKnockedDown, bool first)
{
if (first) {
if (IsStrike(Frame, pinsKnockedDown)) {
Score = "X";
ScoreMessage = "Good Job";
} else if (IsGutterBall(pinsKnockedDown)) {
Score = "0";
ScoreMessage = "You'll do better next time";
}
}
PinsTotal += pinsKnockedDown;
}
然后直接调用它,或者,如果你想保留现有的函数,让它们委托给通用实现:
public void ScoreFirstBall(int pinsKnockedDown)
{
ScoreBall(pinsKnockedDown, true);
}
public void ScoreSecondBall(int pinsKnockedDown)
{
ScoreBall(pinsKnockedDown, false);
}
这样,您就不必担心将PinsTotal
的增量放入其自己的函数中。
至于效率,函数调用确实有成本,但与代码中可能存在的其他瓶颈相比,它通常可以忽略不计。
根据我对你问题的理解,是的,你可以把代码PinsTotal += pinsKnockedDown
放在它自己的方法中。这是调用多个位置共有的代码或逻辑段时的常见做法。如果逻辑发生更改,它还允许逻辑更容易维护,因为调用它的代码将保持不变(假设更改是方法的内部更改(。