네 그럼요. 이 코드를 작성한 사람이 코드에 만족하지 않았고 코드가 작동 할 때까지 찌른 것 같습니다. 그들은 실제 문제가 무엇인지 이해하지 못했을 수도 있고, 더 나쁘게 이해하고, 그것을 해결하기에는 너무 게으른 것일 수도 있습니다.
그러나이 문제를 해결하려면 많은 노력이 필요하며 이러한 수정 사항에는 관련 위험이 따른다는 경고입니다.
이상적으로는 문제가 무엇인지 파악하고 올바르게 해결할 수 있습니다. 예를 들면 다음과 같습니다.
모듈 A가 시간을 할애하도록 시간 초과를 설정했습니다. 이와 같은 시간이 지정되지 않으면 중단됩니다.
이는 모듈 A가 사용 준비가되었거나 처리가 완료된시기를 올바르게 표시하지 않음을 강력하게 암시합니다. 이 글을 쓴 사람은 아마도 모듈 A를 고치려고하지 않았거나 어떤 이유로 할 수 없었을 것입니다. 이것은 적절한 시퀀싱이 아니라 운에 의해 타이밍 의존성이 다루어지기 때문에 발생하는 재앙처럼 보입니다. 이걸 보았 으면 고치려고합니다.
이것을 바꾸지 마십시오. 날 믿어 라, 당신은 일을 깰 것이다.
이것은 당신에게 많은 것을 말하지 않습니다. 코드가 수행 한 작업에 따라 다릅니다. 그것은 어떤 이유로 든 실제로 코드를 깨뜨리는 명백한 최적화로 보이는 것을 의미 할 수 있습니다. 예를 들어, 루프는 다른 코드 조각이 의존하는 특정 값으로 변수를 남겨 둘 수 있습니다. 또는 변수를 다른 스레드에서 테스트 할 수 있으며 변수 업데이트 순서를 변경하면 다른 코드가 손상 될 수 있습니다.
setTimeout을 사용하는 것은 좋은 습관이 아니라는 것을 알고 있지만이 경우에는 사용해야합니다.
이것은 쉬운 것 같습니다. 현재 setTimeout
하고있는 일 을보고 더 나은 방법을 찾을 수 있어야 합니다.
즉, 이러한 종류의 수정 프로그램이 리 팩터 범위를 벗어나는 경우이 코드 내에서 리팩토링하려고하면 노력의 범위가 크게 증가 할 수 있습니다.
최소한 영향을받는 코드를 자세히 살펴보고 문제가 무엇인지 더 명확하게 설명 할 수 있도록 주석을 개선 할 수 있는지 확인하십시오. 그것은 다음 사람이 당신이 직면하는 것과 같은 수수께끼에 직면하는 것을 막을 수 있습니다.