多くの異なるフォーラム投稿とサンプルプロジェクトを見てみると、同じタイプの機能に対してサービスやユーティリティのどちらかを選択するように見えます。私がこれまでに読んだことは、サービスがテストを容易にする依存性注入のために優れていると言っているということです。他の人は、より速いためにutilsが優れていると言う人もいます。私は、サービスとユーティリティをいつ使用するのか、そしてなぜそれを使うのかについて、何らかのタイプの優先ルールがあるのだろうかと疑問に思っていました。ここで角度2(ng2) - サービスvsユーティリティ、いつ使用するか?
がロードされたデータから表の列を抽出した例である。
サービス
export class TableService {
getColumns(data:Array<any>):Array<GridColumnInterface> {
let columns:Array<GridColumnInterface> = [];
data.forEach((column:any, index:number) => {
columns.push({
headerName: column.name,
field: String(index),
hide: column.isHidden,
class: 'text-center'
});
});
return columns;
}
}
Utilの
export class TableUtil {
static getColumns(data:Array<any>):Array<GridColumnInterface> {
let columns:Array<GridColumnInterface> = [];
data.forEach((column:any, index:number) => {
columns.push({
headerName: column.name,
field: String(index),
hide: column.isHidden,
class: 'text-center'
});
});
return columns;
}
}
だから、これはあなたが選ぶ、なぜでしょうか?
この例はサービス対ユーティリティではなく、静的メソッドとインスタンスメソッドです。どちらのクラスも注射可能にすることも、できないこともあります。あなたがどのように物を使い、テストするか分からないなら、DIは安全な選択です。 – estus