それほど複雑ではないスクリプトを書いているときに、問題を発見しました。まずコードについて説明しましょう。その主な機能は、PHP を使用して Javascript を生成するかどうかを決定し、Cookie を使用してステータスを記録することです
/* PHP コード */
header("Content-type: text/javascript");
if (!haveCookie('cookieName')) {
// ... 何かをする
?>
/* Javascript コード */
if ('未定義' == typeof document.cookie['cookieName']) {
setCookie('cookieName', 3600);
}
// ... Javascript で何かを実行します
}
?>
一見するとコードは完璧に見えますが、親愛なる Xiao Ma がまだ問題を発見しました。 Javascript におけるその判断は常に真です
if ('未定義' == typeof document.cookie['cookieName']) {
// ...
}
このコードには PHP 側の前提条件があるため、
(!haveCookie('cookieName'))の場合、クライアントに表示されます。そして、この条件が満たされない場合、当然このコードはクライアントにスローされません。これを言うのは少し一般的だと思われるので、最初に Javascript コードを脇に置き、PHP コードを使用してそれを表現しましょう
header("Content-type: text/javascript");
if (!haveCookie('cookieName')) {
if (!haveCookie('cookieName')) {
setCookie('cookieName');
}
}
?>
これにより、非常に明確になり、問題を見つけるのが簡単になります。これはクライアント側の Javascript によって実行されますが、うっかりもう 1 つの判断を下してしまいました。
このコードから私が考えたいくつかのナンセンスを要約すると、次のとおりです。
1. コードが長いほど効率が上がらない可能性があります
2. ロジックやプロセスに影響を与えずに、複数の判断をまとめて書いてみます
3. 複雑さの低い関数を判断の前に置くようにしてください
4. 判定が多すぎると、プログラムの効率が低下しやすくなります。判定に時間計算量の高い関数を使用する場合は特に注意してください。
5. if が入れ子になりすぎている場合は、プロセスとアルゴリズムを再考する必要があります
6. 過剰な判断は堅牢なコードを保証しない
7. コードを単純化すると、多くの未発見の問題が見つかるでしょう
8. 別の観点から理解すると、過度の判断はコードに対する自信の欠如です