4

PHPでpublic、private、protectedのキーワードを使用しない正当な理由は何ですか?

ストーリー:私は、コードでアクセス修飾子を積極的に使用しているチーム(明示的に「パブリック」であっても)でプロジェクトを開始し、同じことをするように説得したいと考えています。私はいつもこの種のものはphpのような動的言語ではまったく役に立たないことに気づきますが、私の直感は技術的な議論ではほとんど議論の余地がないことを理解しています。したがって、phpでアクセス修飾子が役に立たない(または有害でさえある)理由をしっかりと明確に説明したいと思います。

私はいくつかの同様のトピックがすでに存在することを知っています

しかし、私がこれを投稿する理由はいくつかあります

  • 私は「パブリック」を使うべきかどうか尋ねていません。私はすでにそれを使用していません。
  • アクセス修飾子が良い理由を聞くことに明確に興味はありません(私はそれらが悪いことを知っています、私はそれを確認するために専門家が必要です)。
  • 「ベストプラクティス」と「OOPの原則」について教えてくれるのであれば、気にしないでください。

TIA

4

4 に答える 4

9

PHPでpublic、private、protectedのキーワードを使用しない正当な理由は?

于 2010-09-16T10:06:10.713 に答える
8

修飾子はprivate--imho--非常に酷使されています。それに関する問題は、クラスを拡張することが不可能になることです。しかし、もっと重要なことは、オブジェクト指向ではなく、クラス指向のコードを書くように導く概念です。

protected私はプロパティのための牛肉を持っていません。実際、使用するスコープはそれだけだと思います。protectedただし、メソッドはテストを難しくするため、通常は面倒です。

于 2010-09-16T10:11:43.887 に答える
4

PHPのような動的言語では、プログラマーはコードがどのように機能するかを知っていると想定されています。つまり、プログラマーは、呼び出すメソッドと直接呼び出さないメソッドを知っています。

これは型なし変数に似ています。型付き言語では各変数は明示的に型付けされますが、PHPではプログラマーが各変数の型を知っていると想定されています。

于 2010-09-16T10:06:33.800 に答える
4

マリオはそれを釘付けにしました(コメントからコピー)

アクセス修飾子は、Java / C ++およびコンパイルされたコードで一般的に意味があり、強制可能です。コンパイルされていないスクリプト言語では、それらを簡単に取り除くことができます。したがって、それらは単なるデコレータと見なされるべきであり、したがって、実用的にはコーディング規約として実装することができます。(Pythonのunderscoritis、および他のほとんどすべてのスクリプト言語を参照してください。PHPは、目的のないアクセスデコレータを備えた単独です。)

制限によるカプセル化よりも便利なAPIの利点について、チームメートを説得するのはあまり成功しません。構文が強制されたアクセスデコレータの使用は、多くの場合、カーゴカルト主導です。

于 2010-09-16T11:17:31.263 に答える