2

次のようなことをしないようにアドバイスする原則はありますか?

mysql_real_escape_string(trim(str_replace($var, "black", "<body text='%body%'>")));

そのようなことがノーノーであるべきだとしたら、これは受け入れられるでしょうか?

$var = trim($var);
$var = str_replace($var, "black", "<body text='%body%'>");
$var = mysql_real_escape_string($var);

それとも、上記のように、単一の like で同じ変数を呼び出して実行するのも悪い習慣ですか? したほうがよいでしょうか:

$var1 = trim($var);
$var2 = str_replace($var1, "black", "<body text='%body%'>");
$var3 = mysql_real_escape_string($var2);

私はいつもこれを疑問に思っていました!

4

5 に答える 5

4

読みやすさを考慮に入れれば、ネスト機能は問題ありません。この非常に単純な例では、ステートメントの解析に投入する必要のある多大な精神的努力があります。

mysql_real_escape_string(trim(str_replace($var, "black", "<body text='%body%'>")));

ネストされた関数を使用する場合は、インテリジェントなインデントを使用して、何が起こっているのかを簡単に確認できるようにします。

mysql_real_escape_string(
  trim(
    str_replace(
       $var, 
       "black", 
       "<body text='%body%'>"
)));
  • 各関数の引数は、それ自体のインデントされた行にあります(trimそして、、、およびのように、str_replace両方とも関数の引数として使用されています)$var"black""<body text='%body%'>"
  • エンディング)));は、関数の入れ子が終了する場所を明確に区切ります。また、簡単な構文チェックサムも提供します(開き括弧の数を数え、それらが最後の閉じ括弧の数と一致することを確認してください)。
于 2012-04-19T02:40:50.870 に答える
4

通常の方法は、最初の例のように関数を「ネスト」することだと思います。

いくつかの理由がありますが、ほとんどの場合、すべてが特定の順序で同じオブジェクトに対して発生しており、その間に何も発生していないことを示しています。

そうは言っても、何をしようとしているのか正確にわからない場合は、簡単に戻って関数を追加できるように、2 番目の例から始めたいと思うかもしれません。

基本的には、最初のほうが好まれ、最終的により一般的 (と私は思います)、2 番目はテストと開発に適しています。

于 2012-04-19T02:27:44.003 に答える
2

あなたの例はすべて問題ありません。それらの間に大きな違いはありません。最初の例をもう少し読みやすくしたい場合は、インデントできます。

mysql_real_escape_string(
  trim(
    str_replace($var, "black", "<body text='%body%'>")));

2番目と3番目の例のように、部分的な結果を一時変数に割り当てることも問題ありません。ただし、変数に意味のある名前を付けると、より便利になる場合があります。

$trimmed = trim($text);
$html = str_replace($trimmed, "black", "<body text='%body%'>");
$sql = mysql_real_escape_string($html);

ところで、最初の例では、他の関数とは異なる順序で関数を呼び出しています。

于 2012-04-19T02:33:54.223 に答える
2

私の意見では、コードをシンプルで読みやすくすることは大いに役立ちます。あなたの最初の例のようなコードを読まなければならないとき、私はそれが本当に好きではありません。通常、誰かがどれだけ複雑なものを作成できるかを示そうとしています。

どちらの方法でも、最初の例よりも優れていると思います。

于 2012-04-19T02:24:59.610 に答える
1

さまざまな点で、sloopjohnB と Jon の両方に同意します。最初の例は完全に有効であり、通常は一般的な方法だと思います。他の人が読んで作業するコードである場合、それを行うことでコーディングの知識を示そうとしているように見えるかもしれませんが、それは通常の慣行であり、コードがあなただけが表示して作業するためのものである場合、それならぜひ、あなたにとって快適であればそれを使用してください。

個人的には、2番目のオプションの方が好きです。何が起こっているのか、どのステップでそれを実行しているのかをより明確に把握できます。また、適切な場所/順序で、機能を追加または変更するオプションがはるかに簡単になります。最初の例に関数を追加する必要がある場合、ブラケットを簡単に忘れたり、関数またはブラケットを間違った場所に置いたりして、本当にうんざりする可能性があります。

于 2012-04-19T02:32:52.723 に答える