フォーマットを扱うヘルパークラスを作っています(つまり、句読点を削除し、タイプ間の変換や名前の再フォーマットなどのメソッドがあります)。これは、フィールドが必要なようには思えません。その唯一の目的は、変換して返すために渡されたものを取得し、再フォーマットすることです。コンストラクタを外すことは悪い習慣ですか?もしそうなら、私のコンストラクタは何をしていますか?私はthis linkを見ていて、それが記述するクラスにはコンストラクタがないことに気づいた。持っているか、どのような状態を必要としないすべてのメソッドを持っているJava - クラスコンストラクタを持たないことは悪い習慣ですか?
答えて
コンストラクタを除外するために悪い習慣ですか?
はい - あなたはどんなコンストラクタを指定しない限りので、Javaコンパイラは、あなたのクラス自体と同じ可視性を持つコンストラクタを提供します。
すべてのメソッドは静的なものと仮定 - あなたはポリモーフィズムを希望しない限り、そう思われる - ときに、他の開発者が誤って、あなたのクラスのインスタンスを作成しないないようにあなたは、あなたのクラスfinal
を作成し、それをprivate
コンストラクタを与える必要がありますそれは無意味であろう。 APIについて考えるとき、いつでも私は私がやる、愚かな何かをする開発者のための能力を削除することができますので、:)
だから、のようなもの:
public final class Helpers {
private Helpers() {
}
public static String formatDate(Date date) {
// etc
}
}
なお、式のうち、多型をとることにより、私は「今まで、ノー静」の信者ではないよ - - あなたもうまく罰金かもしれテストなどのために、この動作を変更する可能性を取り除くしているが、それは検討する価値があります。
任意のクラスは、コンストラクタのプライベートを作ることによって、コンストラクタの可視性を減らすために自由です。
例java.lang.Math Javaのクラス。 java.lang.Math
として
は、誰もが誤ってそのクラスのインスタンスを作成することができないように、彼らはprivate
としてコンストラクタを宣言したクラスと同様の仕事をすべての静的メソッドを持っています。
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
悪い習慣ではありません。指定した例には、Objectコンテキストで使用できるメンバー変数はありません。このような状況では、メソッドを呼び出す前にクラスのオブジェクトを作成するためにメモリを割り当てる必要がないため、静的メソッドを持つことをお勧めします。
通常は、各クラスにはデフォルトコンストラクタを持っていても、クラスであなたのコンストラクタを定義するのは良いコーディングプラクティスです。
しかし、あなたはoveloadedコンストラクタを使用するか、あなたは、コンストラクタを削除することができます任意のシングルトンパターンを作るために、特別なニーズを持っていない場合。
あなたのケースで静的メソッドを使用している場合は、コンストラクタを定義する必要はありません。このクラスのオブジェクトを持つ必要はありません。
コンパイラは、デフォルトのコンストラクタ(パラメータなし)を生成します。あなたのクラスが状態を持たず、初期化が必要なクラスを拡張していない場合、明示的なコンストラクタを宣言することなくそれを放棄することができます。
クラスにインスタンス変数がないので、
コンストラクタは、インスタンス変数を初期化するためのものです。
まだコンストラクタをスキップすると、コンパイラはデフォルトのコンストラクタを挿入します。
- 1. これは悪い習慣ですか?
- 2. 否定的なCSSルールを持つことは悪い習慣ですか?
- 3. 静的なフィールドを持つのは悪い習慣ですか?
- 4. BackPressedを呼び出すことは悪い習慣ですか?
- 5. は@unlink悪い習慣ですか?
- 6. 仮想メソッドを持たないベースクラスの継承は悪い習慣ですか?
- 7. Javaで `this`を使うのは悪い習慣ですか?
- 8. 論理を表示することは悪い習慣です
- 9. Java標準キーストアを使用することは悪い習慣です
- 10. C++ - クラス内のクラスオブジェクトプロパティではない変数を持つことは悪い習慣ですか?
- 11. Java:同じパッケージ内で循環依存関係を持つことは悪い習慣ですか?
- 12. これは悪い習慣ですか? C++
- 13. インタフェースとしてのラベルはJava OOでは悪い習慣ですか?
- 14. .exeファイルをNugetパッケージに含めることは悪い習慣ですか?
- 15. これは悪い習慣です(これは間違っていますか)。
- 16. Javaではどのようなグローバル変数が悪い習慣ですか?
- 17. JavascriptなぜFOR INは悪い習慣ですか?
- 18. メソッドの静的なローカル変数は悪い習慣ですか?
- 19. 拡張メソッドと拡張プロパティは悪い習慣ですか?
- 20. 独自のgetメソッドを持たないsetメソッドを持つのは悪い習慣ですか?
- 21. 複数の返品をすることは悪い習慣ですか?
- 22. 任意のSQLテーブルを作成することは悪い習慣ですか?
- 23. eslintrcファイルをグローバルにインストールすることは悪い習慣ですか?
- 24. Javascript - 関数の配列はこの悪い習慣です
- 25. Java Swing ElementsでHTMLスタイルを使用するのは悪い習慣ですか?
- 26. 1台のNginxリバースプロキシサーバを持つ複数のUnicorn App Serverを持つことは悪い習慣ですか?
- 27. MVVMのViewModelに空の基本クラスを持たせることは悪い習慣ですか?
- 28. コントローラのアクションが異なる権限レベルを持つことは悪い習慣ですか?
- 29. AngularJS:これは認証のための悪い習慣ですか?
- 30. 静的クラスはPHPでは悪い習慣ですか?
+1はプライベートコンストラクタを推奨します。 –
私は何かを学んだ:) – kishu27
ありがとう!私は決して(私のJavaでの非常に短い経験の中で)以前は私的なコンストラクタを見たことはありませんでした。 –