0

我正在研究一個沉重的電子商務應用程序。在這樣的應用程序跟蹤是一個巨大的關切關鍵是要知道用戶是使用功能x還是點擊按鈕y等。應該如何抽象一個跟蹤代碼?

例如,假設您可以通過單擊標題上的搜索按鈕或應用程序寬鍵盤命令CTRL + S來調出搜索。

現在,如果我們想跟蹤這樣的事情,最好的方式是如何處理它。我思考和(使用僞JavaScript在這裏,但語言並不重要)之間的抖動:

1.只要做到其中,動作發生的直接追蹤:

function searchButtonClicked{ 
    //this event will be raised anyway to be catched somewhere else to bring up the search 
    raiseEvent('searchButtonClicked'); 
    //now directly track the stuff here 
    trackingService.trackEvent('searchButtonClicked'); 
} 

而且......

2.就提高了操作事件,然後趕上那些在trackingService

function searchButtonClicked{ 
    //this event will be raised anyway to be catched somewhere else to bring up the search 
    raiseEvent('searchButtonClicked'); 
} 

...在trackingService

onEvent('searchButtonClicked', function(){ 
    track('searchButtonClicked'); 
}); 

所以乍看之下某處2.似乎有點更好的以我爲這些組件還需要對trackingService的依賴。他們甚至不知道跟蹤存在。另外一些現有的事件可能會被重用。然而,只有對於一小部分事件纔是真實的。爲了追蹤,大多數事件將會或多或少地被提高。所以我想知道這個抽象層是否真的有必要?

這種跟蹤與日誌記錄沒有太大區別,我認爲直接登錄事件發生的地方是可以接受的做法,不是嗎?

回答

1

一如既往,這取決於您的具體情況。
如果您像您說的那樣,應用程序中最可跟蹤的操作不會引發事件,那麼使用事件的抽象並不是最佳選擇。
你可以讓你的代碼直接調用跟蹤,這不是最乾淨的事情,但它是最簡單的,如果每個調用只有一行,如上所述,可能是可以接受的。

我可以再推薦一件小東西 - 你可以試試AOP
取決於你使用,你可以在技術時,可─
1.標記某些類別/跟蹤(也許使用屬性,或其他)方法或
2.創建將持有的所有類的列表中選擇一個類/方法來跟蹤。

0

如果你在JavaScript中這樣做,使用像JQuery這樣的庫可以讓你的生活更輕鬆。否則,你需要在你的代碼中有一個事件註冊和監聽器機制。的例子

檢查here下bind()函數

$("#searchButton").bind("click", function() { 
    track('searchButtonClicked'); 
})