2014-11-20 70 views
0

我正在通過John Papa閱讀此優秀樣式指南。在列表中,他談到了'可綁架的成員最高'。AngularJS語法 - John Papa的可綁定頂部語法不明確

引用他的例子,他說:避免這種

/* avoid */ 
function Sessions() { 
    var vm = this; 

    vm.gotoSession = function() { 
     /* ... */ 
    }; 
    vm.refresh = function() { 
     /* ... */ 
    }; 
    vm.search = function() { 
     /* ... */ 
    }; 
    vm.sessions = []; 
    vm.title = 'Sessions'; 

,而是使用這種

/* recommended */ 
function Sessions() { 
    var vm = this; 

    vm.gotoSession = gotoSession; 
    vm.refresh = refresh; 
    vm.search = search; 
    vm.sessions = []; 
    vm.title = 'Sessions'; 

    //////////// 

    function gotoSession() { 
     /* */ 
    } 

    function refresh() { 
     /* */ 
    } 

    function search() { 
     /* */ 
    } 

雖然這是非常乾淨的,它帶來的一個問題。如果你的功能有爭議呢?假設在上面的例子中,函數search得到一個查詢:function search(str)。爲了能夠做到這一點作爲一個內膽,然後他建議樣子:

function Sessions() { 
    var vm = this; 

    vm.search = search; 

    ////////// 

    function search(str) { 

    } 

問題是,那麼當你看到在頂部vm.search = search你不知道什麼是傳遞給函數,你會需要向下滾動到功能function search(str)找出。

有人能爲我擴展嗎?

編輯

我創建an issue on the page問約翰自己對此作出迴應。

+0

這是一個很好的問題,但我不確定堆棧溢出是否是獲得答案的最佳位置。在過去,我們有類似你的風格指南的問題,並發現如果你對他的風格指南迴購存在問題,他會回答。 – user1545858 2014-11-20 20:14:07

+0

@ user1545858,好的謝謝。我會提出一個問題,看看他說什麼。 – Kousha 2014-11-20 20:15:11

+0

沒問題。我會對這個答案感興趣,所以如果你可以在這裏重新發布或者把問題的鏈接放在這裏,我們將不勝感激。 – user1545858 2014-11-20 20:29:27

回答

0

您的IDE應該能夠處理該問題,或者您可以使用TypeScript's接口來保持課程本身的「最高層」和乾淨的實施。

我建議Visual Studio(如果你做c#/ asp.net的東西)或Web風暴,如果沒有。 Web Storm非常便宜,是網絡工作的優秀編輯。崇高也可能有一些插件。

+0

所以基本上你是說我應該使用像jsDoc這樣的文檔來定義什麼被傳遞給最頂端的'search'? – Kousha 2014-11-20 20:25:16

+0

我沒有使用jsDoc,但如果它讓你暗示參數,那麼是應該工作。理想情況下,您的IDE將能夠推斷出搜索是什麼以及需要什麼參數 – John 2014-11-20 20:31:21

+0

另外,如果您使用特定的編輯器查看代碼,我認爲編寫一個可以理解的代碼通常不是個好主意。一個好的代碼應該很好的記錄和編寫,這樣即使是一個簡單的記事本也可以用來閱讀它 – Kousha 2014-11-20 20:32:06