そのとおり。これらは、このコードを書いた人がコードに不満であり、動作するようになるまでコードを突っ込んでいた可能性があることを明確に示しています。実際の問題が何であるかを理解していないか、さらに悪いことに、それらを理解していて修正するのが面倒だった可能性があります。
ただし、それらを修正するには多くの労力が必要であり、そのような修正にはリスクが伴うことを警告しています。
理想的には、問題が何であるかを把握し、適切に修正できるようになります。例えば:
モジュールAに何かをする時間を与えるためのタイムアウトセット。このようにタイミングが合わないと、壊れてしまいます。
これは、モジュールAがいつ使用できる状態になったか、または処理がいつ終了したかを適切に示していないことを強く示唆しています。おそらくこれを書いた人は、モジュールAの修正を気にしたくなかったか、何らかの理由でできなかったでしょう。これは、タイミングの依存関係が適切なシーケンスではなく運で処理されることを示唆しているため、災害が発生するのを待っているように見えます。これを見た場合、私はそれを修正したいと思います。
これを変更しないでください。私を信じて、あなたは物事を壊すでしょう。
これはあまりわかりません。コードが何をしていたかによります。それは、何らかの理由で実際にコードを壊す明白な最適化のように見えるものを持っていることを意味するかもしれません。たとえば、別のコードが依存する特定の値に変数を残すループが発生する場合があります。または、変数を別のスレッドでテストし、変数の更新順序を変更すると、他のコードが破損する場合があります。
setTimeoutを使用することはお勧めできませんが、この場合は使用する必要がありました。
これは簡単なように見えます。あなたは何setTimeout
をしているかを見ることができ、おそらくもっと良い方法を見つけることができるはずです。
そうは言っても、これらの種類の修正がリファクタリングの範囲外である場合、これらはこのコード内でリファクタリングを試みると作業範囲が大幅に増加する可能性があることを示しています。
少なくとも、影響を受けるコードをよく見て、少なくともコメントを改善して問題が何であるかをより明確に説明できるようになるかどうかを確認してください。それはあなたが直面する同じ謎に直面することから次の人を救うかもしれません。