2017-01-04 5 views
0

グローバルmethod()があるとします。グローバル関数とその関数を名前空間にラップすることには違いがありますか?

あなたは

\\Namespace\Class::method(); 

のようなものは、どんな違いがあるの名前空間とクラスに移動し、それを呼び出すことができますか?他のものよりも優れていますか?

本質的には何も変更していないし、その方法は以前と同じようにすべての意図と目的のためであり、どこからでも呼び出すことができますが、さらに文字を入力する必要があります。私は恥ずかしいほど基本的なものを見逃しましたか?

+0

'method()'という2つの関数があり、両方が必要になると思う方が良いです。名前空間は、同じ名前の異なる関数を分離するのに便利です。 – Nicolas

+1

名前空間は衝突を防ぎ、関数を定義されたスコープにインデックス化できるので、多数の関数を管理する方が簡単です。名前空間は、単一のメソッド名だけで実現できるよりも、どのような機能が優れているのかを大まかに伝える必要があります。 – mopsyd

+0

私が今まで理解しているように、違いは*区画化*です。これは、同じ名前のメソッドが異なるコンパートメントに存在することを可能にします。 – Dennis

答えて

1

名前空間とクラスは、コードの複合化に役立ち、名前の衝突を回避するのに役立ちますが、autoloadersを使用して必要なときに必要なものだけを読み込むことで、実際には高速化できます。

それはあなたがこのようなあなたのメソッドを呼び出すと思います非常に低いです:

\\Namespace\Class::method(); 

あなたははるかにあなたのファイルの先頭にuse Namespace\Classステートメントを宣言する可能性がある、とだけClass::method();を行います。

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

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

しかし、意味があるためには、違いは化粧品以上でなければなりません。クラスやオブジェクトを使用している場合は、SOLIDの原則とdesign patterns(一度に少しずつ)を読んで、OOPの利点を取り入れてください。

関連する問題