8

多くの場合、私は関数が次のように呼び出されるのを見てきました

$content = getContent($isAdmin = false)

関数宣言は次のようなものですが

function getContent($isAdmin = true){
....}

なぜ誰かが変数を作成し、それを関数呼び出しで1回だけ使用するというオーバーロードを追加するのでしょうか。

これにより関数呼び出しが明確になることは理解していますが、代わりにPHPDocブロックを使用するべきではありませんか?

4

2 に答える 2

7

あまりにも多くの「無駄」にショックを受けているような気がします。

変数を使用することは悪いことではありません。頻繁に使用する必要があります。通常、これらはコードをよりわかりやすくし、さらに高速にします。

より説明的な部分はここに当てはまります。その行を見ると、名前が付けられているため、どのパラメーターであるかがわかります。

しかし、代わりに PHPDoc ブロックを使用すべきではありませんか?

実は、これは (docblock) コメントとは関係ありません。関数定義であっても、そのパラメーターに対するコメントはありません。

function getContent($isAdmin = true) {

これは、名前によるパラメーターの定義にすぎません。また、docblock パラメーターは、関数を定義する場合のみになります。

...
 * @param $isAdmin bool (optional) true or false, true by default
...
function getContent($isAdmin = true) {

ただし、関数が呼び出される場所ではありません。

$content = getContent($isAdmin = false)

したがって、その行を見れば (そしてホットキーやマウス ボタンを押す前に)、すでにそれを読んでいます。コードだけで、何も必要ありません。メモ帳や未構成の gedit でも機能します。

$nonAdmin = false;
$content = getContent($nonAdmin);

ところで、コードにコメントが必要な場合、これは通常、コードが複雑すぎることを示しています。また、パラメーターの名前は、docblock よりもはるかに重要です。通常、適切な名前とは、docblock タグを付ける必要がないことを意味します (つまり、維持するコードが少なくて済みます)。

また、最新の IDE は静的解析によってパラメーターの型を認識しているため、docblock タグも必要ありません。いいえ、常に PHPDocblocks を使用する必要はありません。

于 2012-10-07T18:28:56.360 に答える
3

次のように書きます。

$content = getContent($isAdmin = false)

関数スコープ外でも定義できます$isAdmin。つまり、 a を発行するvar_dump($isAdmin)と、 が得られbool(false)ます。

このようにして、var 割り当てを保存します。

$isAdmin = false;
$content = getContent($isAdmin);
...
someStuff($isAdmin);
于 2012-10-07T18:32:57.730 に答える