クラスXHelperまたはXUtilsの呼び出し方法をどのように決定しますか?
私の心に:
ヘルパークラスは、インスタンス化してビジネス作業を行うことができるクラスです。
Utilsクラスは、一種のインスタンスで小さな繰り返し操作を実行する静的クラスです(Utilsクラス ArrayUtilsまたはApacheのIOUtilsの例)
クラスXHelperまたはXUtilsの呼び出し方法をどのように決定しますか?
私の心に:
ヘルパークラスは、インスタンス化してビジネス作業を行うことができるクラスです。
Utilsクラスは、一種のインスタンスで小さな繰り返し操作を実行する静的クラスです(Utilsクラス ArrayUtilsまたはApacheのIOUtilsの例)
回答:
使用する命名スタイルはたくさんあります。Utilsがより一般的であるという理由だけで提案します。
Utilityクラスは静的メソッドのみを持ち、ステートレスであると理解されています。そのようなクラスのインスタンスは作成しません。
ヘルパーはユーティリティクラスにすることも、ステートフルにすることも、インスタンスの作成を要求することもできます。できればこれは避けます。
名前をより具体的にすることができる場合。たとえば、並べ替えメソッドがある場合は、XSorterにします
配列の場合、次のようなヘルパークラスを見つけることができます
Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper
ところで、ユーティリティクラスの省略形はインスタンスのない列挙型です
enum XUtils {;
static methods here
}
インターフェイスを実装する必要がある場合は、ステートレスシングルトンを使用します。
enum XHelper implements RequiredInterface {
INSTANCE;
// no instance fields.
}
ユーティリティは、一般的に使用される「リーフノード」クラスです。つまり、プロジェクトへの依存関係がなく、壊れたり役に立たなくなったりすることなく、プロジェクト間で移植できます。例:Vector3、RandomNumberGenerator、StringMatcher、等...
「ヘルパー」は、別のクラスを支援するように設計されたクラスのようです。これらはプロジェクトに依存する場合としない場合があります。GameNetworkClientクラスを作成している場合、そのGameNetworkConnectionクラスは「ヘルパー」であると言えるでしょうGameNetworkClient。
開発者がツールを参照する方法は、これらの単語の一般的な使用法を反映しています。「役に立つ」と「役に立つ」で説明されている補聴器を思い出すことができる場合、役に立つツールにはコンテキストがある傾向があります(チーズおろし金はチーズをすりおろすのに役立ち、コーンストリッパーはトウモロコシを取り除くのに役立ち、スピードローダーは小火器のリロードに役立ちます)。「ユーティリティ」は、さまざまなコンテキスト(WD-40、ダクトテープ、アーミーナイフ、接着剤、懐中電灯など)で機能することが期待されています。
イェスパーが言ったように、それは完全に恣意的です。あなたはあなたの組織のために何がうまくいくかを考え、それを慣例にすることができます。
私にとって、それはこのようなものです:
utils-どこにでも自由に移動およびインポートできる静的クラス。
さまざまなモジュールで役立つ可能性のある一般的なタスクを実行する。Peter Lawreyが言ったように、より具体的な名前が役立ちます。
ヘルパー -クラス助けて他のクラスやモジュールを。
配置されたモジュールでのみ使用され、他の場所にインポートしても意味がないタスク。その名は、より具体的な可能性- ModuleNameのヘルパー(例えばAdministrationHelper、LoginHelper)
これに対する究極の答えはありません。1つの命名規則を理解し、それを使用します。パッケージとクラスに名前を付けることはソフトウェアアーキテクチャの重要な部分であり、誰もあなたからその決定を奪うことはできません。
個人的にはXHelperの方が好きですが、外部コードでXUtilsをより頻繁に見ます。
また、JDKとGuavaの両方にある「複数」の命名方式も気に入っています。
クラスがCollectionオブジェクトを扱う場合、それは呼び出されますCollections
配列>配列(jdk)
リスト>リスト(グアバ)
マップ>マップ(グアバ)
等
Utils組織内、または別の組織内のどこでも使用できる静的クラスに使用すると便利な規則だと思います。Helperクラスは、プロジェクト内で再利用することができる共通のコードを有しており、プロジェクト内の依存関係を有しています。もちろん、一般的に受け入れられているルールはありませんが、これは便利だと思います。