2016-10-17 27 views
3

看過很多不同的論壇帖子和示例項目後,人們似乎在相同類型的功能中選擇服務或實用程序。到目前爲止,我讀過的內容是人們認爲服務更好,因爲依賴注入會使測試更容易。還有人說utils更好,因爲它們更快。我想知道是否有任何類型的關於什麼時候使用服務和util的首選規則,爲什麼?Angular 2(ng2) - Service vs util,何時使用哪個?

這裏是從加載的數據提取表列的例子:

服務

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

該示例不是服務vs util,它是靜態方法vs實例方法。這兩個類都可以注射或不注射。如果你不知道如何使用和測試一個東西,DI是一個安全的選擇。 – estus

回答

3

如果您關心可維護性和可測試性,請使用服務。

如果遇到分析顯示使用該服務佔用大量CPU資源的情況,則切換到util-class並執行基準測試,以獲取正確的數字,使用util-classes運行應用程序的速度會快得多。如果這會在你的應用程序中產生差異(極不可能btw),那麼將該服務類更改爲一個util-class。我會考慮一切過早的優化。

我相信,當您能夠減少應用程序對服務器的請求數量時,它將爲您的應用程序的用戶體驗做出更多貢獻,然後您將可以使用service vs util 。

Angular2 AoT無論如何都將DI代碼轉換爲靜態代碼,因此性能改進的潛力不大。

相關問題