141

クラスXHelperまたはXUtilsを呼び出す方法をどのように決定しますか?

私の心に:

ヘルパークラスは、インスタンス化してビジネス作業を行うことができるクラスです。

Utilsクラスは、ある種のインスタンスに対して小規模で反復的な操作を実行する静的クラスです(ApacheのutilsクラスArrayUtilsまたはIOUtilsの例)

4

5 に答える 5

128

使用する命名スタイルはたくさんあります。より一般的であるという理由だけで、Utilsをお勧めします。

Utilityクラスは、静的メソッドのみを持ち、ステートレスであると理解されています。そのようなクラスのインスタンスを作成することはありません。

ヘルパーは、ユーティリティクラスにすることも、ステートフルにすることも、インスタンスの作成を要求することもできます。可能であればこれは避けたいと思います。

名前をより具体的にすることができれば。たとえば、並べ替え方法がある場合は、XSorterにします

配列の場合、次のようなヘルパークラスを見つけることができます

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

ところで、ユーティリティクラスの省略形は、インスタンスのない列挙型です

enum XUtils {;
    static methods here
}

インターフェイスを実装する必要がある場合は、ステートレスシングルトンを使用します。

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}
于 2012-08-30T07:43:41.177 に答える
28

一般に?それは完全に恣意的です。これには規則はありません。

于 2012-08-30T07:38:43.970 に答える
19

ユーティリティは、一般的に使用される「リーフノード」クラスです。つまり、プロジェクトへの依存関係はなく、壊れたり役に立たなくなったりすることなく、プロジェクトからプロジェクトに移植できます。例:Vector3、、、RandomNumberGeneratorなどStringMatcher..。

「ヘルパー」とは、別のクラスを支援することを目的としたクラスのことのようです。これらはプロジェクトに依存する場合としない場合があります。クラスを作成している場合GameNetworkClient、クラスは「ヘルパー」であると言えます。これは、GameNetworkConnectionクラスが「役立つ」ためGameNetworkClientです。

開発者がツールを参照する方法は、これらの単語の一般的な使用法を反映しています。「役に立つ」と「役に立つ」と説明されている聴覚ツールを思い出すことができる場合、役立つツールにはある程度のコンテキストがある傾向があります(チーズおろし器はチーズをすりおろすのに役立ち、コーンストリッパーはトウモロコシを取り除くのに役立ち、スピードローダーは銃器をリロードするのに役立ちます)。「ユーティリティ」は、さまざまな状況(WD-40、ダクトテープ、アーミーナイフ、接着剤、懐中電灯など)で機能することが期待されています。

于 2019-01-28T06:41:12.103 に答える
9

ジェスパーが言ったように、それは完全に恣意的です。あなたはあなたの組織にとって何がうまくいくかを考え、それを慣習にすることができます。

私にとって、それはこのようなものです:

utils-静的クラス。どこにでも自由に移動およびインポートできます。

さまざまなモジュールで役立つ可能性のある一般的なタスクを実行します。Peter Lawreyが言ったように、より具体的な名前が役立ちます。

helper-別のクラスまたはモジュールを支援するクラス。

配置されたモジュールでのみ使用され、他の場所にインポートしても意味がないタスク。したがって、名前はより具体的になる可能性があります-ModuleName Helper(例:AdministrationHelperLoginHelper

于 2019-10-06T07:36:07.703 に答える
3

これに対する究極の答えはありません。1つの命名スキームを理解し、それを堅持します。パッケージとクラスに名前を付けることはソフトウェアアーキテクチャの重要な部分であり、誰もその決定をあなたから奪うことはできません。

私は個人的にXHelperの方が好きですが、XUtilsは外国のコードでよく見られます。

また、JDKとGuavaの両方にある「複数形」の命名スキームも気に入っています。

Collectionクラスがオブジェクトを扱う場合、それは呼び出されますCollections

配列>配列(jdk)
リスト>リスト(グアバ)
マップ>マップ(グアバ)

于 2012-08-30T07:39:47.193 に答える