有时,我会遇到像这样的循环,我不确定它应该如何构造以避免代码重复并使其更具可读性。
请注意,虽然在这个例子中我用 C# 编写并使用 Unity3d 引擎,但这个问题一般是关于循环的,这里没有关于 C#/Unity3d 的具体内容,或者在我看来是这样。
// ...
Vector3 rayPosition = transform.position;
Vector3 rayDirection = transform.forward;
RaycastHit hit;
Vector3 rayFinish = rayPosition + rayDirection * rangeLeft; // This line repeats...
while (Physics.Linecast ( rayPosition, rayFinish, out hit ) ) {
rangeLeft -= hit.distance;
rayPosition = hit.point;
rayDirection = Vector3.Reflect(rayDirection, hit.normal);
rayFinish = rayPosition + rayDirection * rangeLeft; // ...here.
}
// ...
(当然,这个代码重复是微不足道的,但它只是一个例子。)
不可能让它进入 do...while 循环,因为需要在第一次运行循环之前检查条件。编写这样的代码的最佳方法是什么?