2016-08-17 5 views
-5

this()を使用してオーバーロードされたコンストラクタを呼び出すと便利なことがある理由の1つは、コードの不要な重複を防ぐことができる理由の1つです。あなたのクラスはしばしばオブジェクトコードが小さいためです。これは、負荷時間が問題となるインターネット経由で配信されるプログラムにとって特に重要です。コンストラクタでこのコードとインラインコードを使用する場合のトレードオフ

ただし、注意する必要があります。 this()を呼び出すコンストラクターは、初期化コードのインラインをすべて含むコンストラクターよりも少し遅く実行されます。これは、2番目のコンストラクターが呼び出されたときに使用される呼び出しと戻りのメカニズムがオーバーヘッドを追加するためです。あなたのクラスが少数のオブジェクトの作成に使用される場合、または がthis()を呼び出すクラスのコンストラクタがめったに使用されない場合、実行時パフォーマンスのこの低下はおそらく重要ではありません。

クラスの読み込みにかかる時間はどのくらいですか? と これをコンストラクタで使用してからインラインコードを使用するまでのトレードオフのポイントは何ですか?

+3

ここでは本当に議論の余地がありません。理論上のパフォーマンス上の利点ではなく、読みやすさとメンテナンスのためのコードを記述してください。つまり、コードを一度書き、 'this()'を使って必要なところで呼び出します。 – erickson

+2

パフォーマンスに問題はありますか?コードを繰り返すので、保守が難しくなるのですか? –

+6

パフォーマンスは完全に無関係です。最もメンテナンス可能なコードを使用してください。コード内の重複は、変更が必要なときに、コードが重複しているすべての場所で行うことを忘れてしまう大きなチャンスがあることを意味します。 –

答えて

5

これは早すぎる最適化の優れた典型的なケースです。重複を排除する際のパフォーマンスについて考える人は、コードベースを乱雑にしながら、基本的に同じことを行ういくつかのコードパスを削除し、これらのコードパス間で相違が生じる機会を与えることを考えてください。

結論:このようなちょっとしたことは心配しないで、簡潔で分かりやすいコードを書いてください。重複はメソッド呼び出しがあなたのパフォーマンスを傷つけるよりも何千倍もあなたのシステムを傷つけるでしょう。

関連する問題