0

グローバル があるとしますmethod()

名前空間とクラスに移動して、次のように呼び出すことができます

\\Namespace\Class::method();

違いはありますか?あるものは別のものよりも優れていますか?

基本的には何も変更しておらず、メソッドは以前と同じようにすべての意図と目的に対応しています。どこからでも呼び出すことができますが、より多くの文字を入力する必要があります。恥ずかしいほど基本的なことを見逃しましたか?

4

1 に答える 1

1

名前空間とクラスは、コードの区画化に役立ち、名前の衝突を回避するのに役立つだけでなく、オートローダーを使用して必要なときに必要なものだけをロードできるようにすることで、実際に高速化します。

次のようにメソッドを呼び出すことはほとんどありません。

\\Namespace\Class::method();

use Namespace\Classファイルの先頭でステートメントを宣言する可能性がはるかに高く、 Class::method();.

さらに、静的メソッドを使用する代わりに、実際に実際のオブジェクトをインスタンス化する可能性が高くなります (これは便利ですが、カプセル化を実際に壊す可能性があります)。あなたの例では、多くの人にとって特にオブジェクト指向ではない静的メソッドを使用しています。

機能的には、分離して考えると、メソッドと関数の間に実際の違いはありません。ただし、メソッドはクラス プロパティとプライベート メソッドにアクセスできるため、責任が適切に分散されたシステムを構築するのにさらに役立ちます。

しかし、意味のあるものであるためには、その違いは表面的なもの以上でなければなりません。クラスとオブジェクトを使用している場合は、SOLIDの原則と設計パターンを(少しずつ)読み、 OOPの利点を取り入れてください。

于 2017-01-04T16:25:12.590 に答える