2016-10-17 7 views
3

多くの異なるフォーラム投稿とサンプルプロジェクトを見てみると、同じタイプの機能に対してサービスやユーティリティのどちらかを選択するように見えます。私がこれまでに読んだことは、サービスがテストを容易にする依存性注入のために優れていると言っているということです。他の人は、より速いために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; 
    } 
} 

だから、これはあなたが選ぶ、なぜでしょうか?

+0

この例はサービス対ユーティリティではなく、静的メソッドとインスタンスメソッドです。どちらのクラスも注射可能にすることも、できないこともあります。あなたがどのように物を使い、テストするか分からないなら、DIは安全な選択です。 – estus

答えて

3

メンテナンス性とテスト容易性が気になる場合は、サービスを使用してください。

サービスを使用していることが明らかにCPUリソースを占有していることが明らかになった状況に遭遇した場合、util-classに切り替えてベンチマークを行い、util-classでアプリを実行する速度を適切な数値にします。これがあなたのアプリケーションに違いがある場合(非常に低いbtw)、そのサービスクラスをutil-classに変更してください。私は他のすべての時期尚早の最適化を考えています。

あなたのアプリケーションがあなたのサーバーに対して行うリクエストの数を減らすことができれば、それはあなたのアプリケーションのユーザーエクスペリエンスに一層貢献すると確信しています。サービスvs util 。

Angular2 AoTはDIコードをスタティックコードに変換するため、パフォーマンスの向上はあまりありません。

関連する問題